MySQL全文搜索的一个字母差为0
我有一个表,我们称它为MySQL全文搜索的一个字母差为0,mysql,sql,full-text-search,Mysql,Sql,Full Text Search,我有一个表,我们称它为a,在其名称字段上有一个全文索引。 此表包含大约1200行,其中一行的name字段的值为“televisiori” 此查询: SELECT A.name, MATCH(name) AGAINST ('Televisori') AS `match` FROM A 结果(不是确切的值,但我记得大约是8): 鉴于此: SELECT A.name, MATCH(name) AGAINST ('Televisore') AS `match` FROM A 没有结果 我检查过的东西
a
,在其名称
字段上有一个全文索引。此表包含大约1200行,其中一行的
name
字段的值为“televisiori”
此查询:
SELECT A.name, MATCH(name) AGAINST ('Televisori') AS `match`
FROM A
结果(不是确切的值,但我记得大约是8):
鉴于此:
SELECT A.name, MATCH(name) AGAINST ('Televisore') AS `match`
FROM A
没有结果
我检查过的东西:
- 这个词不是停止词
- 它的长度超过4个字符(更确切地说,是3个字符,因为我使用的是InnoDB?)
- 这个词出现在不到50%的记录中——这是数百个记录中唯一的一个
- 我试着在每个可能的组合中改变单词的大小写,只是为了完全确定,但不应该这样,因为我使用的是不区分大小写的排序规则。而且,当我使用“televisiori”时,它匹配没有问题
有什么我遗漏的吗?所以你想查找
televisiore
并得到包含televisiori
的结果吗?是的,就是这样。全文搜索是正确的工具吗?还是我误解了什么?这不是全文搜索应该做的,但你可以尝试一下查询扩展修饰符:MATCH(name)对('televisiore'进行查询扩展)
,它似乎给出了更多的结果。我知道这是一个关于一个非常大的领域的一般性问题,但是如果我想以“正确”的方式做事,我会如何去做ti呢?也许将全文搜索与Soundex或Levenshtein?之类的东西结合起来使用Soundex可以在这里工作,但不能从全文搜索及其功能中获益。如果您选择全文只是为了满足这个要求,您可以很容易地放弃它。要获得Levenshtein距离,您必须为MySQL实现它,或者使用一种语言来构建查询并将其发送到MySQL。
SELECT A.name, MATCH(name) AGAINST ('Televisore') AS `match`
FROM A