本文介紹了在MySQL中搜索相似的單詞的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有一個數(shù)據(jù)庫,里面有一張叫毒品的桌子。其中有一個名為”Description”的字段,它有一個全文索引。我想搜索類似的詞‘AciFree-O 10ml’,‘AciFree O 10ml’。
我嘗試了以下查詢,
SELECT * FROM drugs where SOUNDEX(Description) = SOUNDEX('Acifree -O 10ml');
但查詢返回以下值
|ID |Description |
----------------------------
|177 |Acifree -O 10ml |
|541 |Acifree O 10ml |
|817 |Acifree -O 5ml |
|817 |Acifree -O 7ml |
|916 |Acifree -O 5 ml |
我只需要”AciFree-O 10ml“和”AciFree O 10ml“值。喜歡以下內(nèi)容
|ID |Description |
----------------------------
|177 |Acifree -O 10ml |
|541 |Acifree O 10ml |
有什么解決方案嗎?
推薦答案
您可以使用聚合函數(shù)進行如下嘗試
select *, MATCH(Description) AGAINST('Acifree -O 10ml' IN NATURAL LANGUAGE MODE)
as score
from tutorial
where MATCH(Description) AGAINST('Acifree -O 10ml' IN NATURAL LANGUAGE MODE)
and MATCH(Description) AGAINST('Acifree -O 10ml' IN NATURAL LANGUAGE MODE)=
(select max(MATCH(Description) AGAINST('Acifree -O 10ml' IN NATURAL LANGUAGE MODE))
from tutorial
)
demo link
輸出
id description score
1 Acifree -O 10ml 0.15835624933242798
2 Acifree O 10ml 0.15835624933242798
在WHERE子句中使用MATCH()
時,首先自動對返回的行進行相關性最高的排序。
相關性值是非負浮點數(shù)。
零相關性意味著沒有相似性。
相關性是根據(jù)-
計算的
行中的字數(shù)
該行中唯一字的數(shù)量
集合中的總字數(shù)
文檔數(shù)
(行)包含特定單詞
因為您需要最相關的,所以我取了最高分
這篇關于在MySQL中搜索相似的單詞的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,