Php 在mysql中如何将字符串的一部分与大型数据库进行比较 我有一个mysql表,它有一列域名(大约10万行)

Php 在mysql中如何将字符串的一部分与大型数据库进行比较 我有一个mysql表,它有一列域名(大约10万行),php,mysql,sql,database,Php,Mysql,Sql,Database,例如: ID Domain_Name 1 AnotherOlataxi.xom 2 goodlolita.com 我还有几张表包含来自许多不同语言的单词,如英语单词、法语单词等 例如: ID Language Word 1 en good 2 en taxi 3 fr ola 我想将每个域与languages表进行比较,找到单词和语言 例如: 我应该得到一个单词和语言的列表。 如果我运行

例如:

ID    Domain_Name
 1    AnotherOlataxi.xom
 2    goodlolita.com
  • 我还有几张表包含来自许多不同语言的单词,如英语单词、法语单词等
  • 例如:

    ID    Language   Word 
    1     en         good
    2     en         taxi
    3     fr         ola
    
    我想将每个域与languages表进行比较,找到单词和语言

    例如: 我应该得到一个单词和语言的列表。 如果我运行域名anotherolataxi.com,它应该返回

    Array(
     'another'=>'en',
     'ola'   => 'fr',
     'taxi' =>'en'
    )
    

    如何获得此结果以及如何在不影响性能的情况下比较这些大型表?

    您可以使用类似的
    来完成此操作。虽然效率不高,但它可以满足您的需求:

    select d.*, w.*
    from domains d join
         words w
         on d.domain_name like concat('%', w.word, '%');
    
    对于单个域,性能应该不会太差。您可以添加
    where
    子句:

    where d.id = 1
    

    例如。

    您可以使用
    这样的
    来完成此操作。虽然效率不高,但它可以满足您的需求:

    select d.*, w.*
    from domains d join
         words w
         on d.domain_name like concat('%', w.word, '%');
    
    对于单个域,性能应该不会太差。您可以添加
    where
    子句:

    where d.id = 1
    

    例如。

    这种方法的唯一问题是,只能在字符匹配的基础上进行匹配,无法完全确定找到的单词是否真的在域名内。例如,如果我只看字符序列,另一个otherolataxi也包含“hero”一词。如果你的单词列表中有这个单词,那么你就有了一个匹配词,即使这个单词实际上并不存在。是的。这是一个正确的观点。但是有没有一种方法可以像第一个匹配的单词是“另一个”一样分割凝视的一部分呢。因此,它将被从字符串中移除,然后“OlaTaxi”将在那里,这很困难。让我们假设“ano”是一种语言中的有效词。你如何确定你应该先匹配“ano”并将其从域名中删除,还是选择“另一个”?你将面临的另一个问题是,当你在多种语言中使用同一个词时。它们的发音可能不同,可能意味着完全不同的东西,但它们的拼写是相同的。例如,“ola”不仅是一个法语单词,也是一个西班牙语单词。你如何决定为域名中的一个单词选择哪种语言?这种方法的唯一问题是,只能在字符匹配的基础上进行匹配,无法完全确定找到的单词是否真的在域名中。例如,如果我只看字符序列,另一个otherolataxi也包含“hero”一词。如果你的单词列表中有这个单词,那么你就有了一个匹配词,即使这个单词实际上并不存在。是的。这是一个正确的观点。但是有没有一种方法可以像第一个匹配的单词是“另一个”一样分割凝视的一部分呢。因此,它将被从字符串中移除,然后“OlaTaxi”将在那里,这很困难。让我们假设“ano”是一种语言中的有效词。你如何确定你应该先匹配“ano”并将其从域名中删除,还是选择“另一个”?你将面临的另一个问题是,当你在多种语言中使用同一个词时。它们的发音可能不同,可能意味着完全不同的东西,但它们的拼写是相同的。例如,“ola”不仅是一个法语单词,也是一个西班牙语单词。您如何决定在域名中为单词选择哪种语言?