我有一个数据库,其中有一个表叫毒品。在该字段中称为'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 '值。喜欢
|ID |Description |
----------------------------
|177 |Acifree -O 10ml |
|541 |Acifree O 10ml |
有什么解决办法吗?
答案 0 :(得分:0)
您可以使用聚合函数尝试以下操作
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
)
输出
id description score
1 Acifree -O 10ml 0.15835624933242798
2 Acifree O 10ml 0.15835624933242798
在WHERE子句中使用MATCH()
时,返回的行将自动按照相关性最高的顺序进行排序。
相关性值是非负浮点数。
零相关性意味着没有相似性。
相关性基于-
因为您需要最好的相关性,所以我获得了最高分