Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL全文搜索的一个字母差为0_Mysql_Sql_Full Text Search - Fatal编程技术网

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