嘿,我得到了這個挑戰,我有一個MySQL數據庫表1與查詢或文本和表2同義詞和錯誤拼寫爲CSV [逗號分隔值]。現在我想測試表1中的任何查詢詞是否與表2中的同義詞匹配或拼寫錯誤,然後我會分別選擇它們。MySQL查詢/比較表1和表2中的關鍵字:
例如:
表1行:「我生病了HIV艾滋病,我能做些什麼」
表2:HIV,AIDS,癌症,結核病,水痘......
所以這將被選擇,因爲至少有表1,表2相匹配的同義詞的匹配字。
嘿,我得到了這個挑戰,我有一個MySQL數據庫表1與查詢或文本和表2同義詞和錯誤拼寫爲CSV [逗號分隔值]。現在我想測試表1中的任何查詢詞是否與表2中的同義詞匹配或拼寫錯誤,然後我會分別選擇它們。MySQL查詢/比較表1和表2中的關鍵字:
例如:
表1行:「我生病了HIV艾滋病,我能做些什麼」
表2:HIV,AIDS,癌症,結核病,水痘......
所以這將被選擇,因爲至少有表1,表2相匹配的同義詞的匹配字。
select strings.text
from table1 strings
where exists (
select 1
from table2 sm
where instr(strings.text, sm.word) <> 0
)
在一個MyISAM
表:
SELECT *
FROM table1 com, table2 syn
WHERE MATCH (com.body) AGAINST(syn.list IN BOOLEAN MODE);
這甚至會工作,如果你沒有在com.body
一個FULLTEXT
指數,但與一FULLTEXT
指數這將是超級快。
如果你換你同義詞列表到雙引號,像這樣:
"HIV", "AIDS", "chicken pox", "swine flu"
,只有整個短語都會被匹配,而不是分裂的話。
嘿, Qns?您是否真的在發佈之前測試了這一點?即時通訊使用相同的技巧,但得到「錯誤1210(HY000):不正確的參數反對」。 認爲參數不好。 – 2009-06-24 14:45:13