嘿,我遇到了这个挑战,我得到了一个带有查询或文本的MySQL数据库表1和带有同义词和拼写错误的表2作为CSV [逗号分隔值]。现在我想测试表1中的任何查询词是否与表2中的同义词或拼写错误相匹配,然后我将分别选择它们。
示例:
表1排:“我厌倦了艾滋病艾滋病,我该怎么办?” 表2:艾滋病毒,艾滋病,癌症,结核病,水痘......所以这将被选中,因为表1中至少有一个MATCH单词与表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
)