在MySQL中搜索相似的单词 [英] search similar words in mysql

查看:0
本文介绍了在MySQL中搜索相似的单词的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据库,里面有一张叫毒品的桌子。其中有一个名为"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       |

有什么解决方案吗?

推荐答案

您可以使用聚合函数进行如下尝试

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()时,首先自动对返回的行进行相关性最高的排序。 相关性值是非负浮点数。 零相关性意味着没有相似性。 相关性是根据-

计算的
  • 行中的字数
  • 该行中唯一字的数量
  • 集合中的总字数
  • 文档数 (行)包含特定单词

因为您需要最相关的,所以我取了最高分

这篇关于在MySQL中搜索相似的单词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆