MySQL搜索/比较表1和表2中的关键字:

时间:2009-06-22 11:45:24

标签: mysql text full-text-search

嘿,我遇到了这个挑战,我得到了一个带有查询或文本的MySQL数据库表1和带有同义词和拼写错误的表2作为CSV [逗号分隔值]。现在我想测试表1中的任何查询词是否与表2中的同义词或拼写错误相匹配,然后我将分别选择它们。

示例:

表1排:“我厌倦了艾滋病艾滋病,我该怎么办?”

表2:艾滋病毒,艾滋病,癌症,结核病,水痘......

所以这将被选中,因为表1中至少有一个MATCH单词与表2中的同义词相匹配。

2 个答案:

答案 0 :(得分:2)

MyISAM表格上:

SELECT  *
FROM    table1 com, table2 syn
WHERE   MATCH (com.body) AGAINST(syn.list IN BOOLEAN MODE);

即使您在FULLTEXT上没有com.body索引,但是使用FULLTEXT索引,这也会非常快。

如果将同义词列表包装成双引号,如下所示:

"HIV", "AIDS", "chicken pox", "swine flu"

,只会匹配整个短语,而不仅仅是分词。

答案 1 :(得分:0)

select strings.text
  from table1 strings
 where exists (
         select 1
           from table2 sm
          where instr(strings.text, sm.word) <> 0
       )