MySQL以短词开头的全文搜索失败。

问题描述 投票:0回答:1

我在PHP中使用这样的查询方式来查找标题和内容的文章。

SELECT * FROM `db_table` WHERE MATCH(ptitle, pcontent) AGAINST ("+'.$search.'*" IN BOOLEAN MODE)

它工作得很好,但是当搜索以一个短词开头时,比如西班牙语文章('el','la'),我就会遇到问题。

例如,当我想在其他帖子中找到一个标题为 "El Perro "的帖子时,我做了以下搜索,结果是。

  • "El Perro" -> 无。
  • "Perro" -> 找到了。
  • "El" -> 返回其他帖子,但不是我要找的那个。
  • "Perro El Perro" -> 找到了。

显然,当搜索以短词开始时,问题就会发生。我怎样才能解决这个问题?

mysql search full-text-search
1个回答
0
投票

在Full text中,一个词的长度有最小值。

默认情况下,长度小于3个字符或大于84个字符的词不会出现在InnoDB全文搜索索引中。最大和最小字长值可以使用innodb_ft_max_token_size和innodb_ft_min_token_size变量进行配置。

https:/dev.mysql.comdocrefman8.0enfulltext-stopwords.html)。

你可以修改sql.ini中的值来改变这个限制。

 [mysqld]
 ft_min_word_len = 3

默认值是4,上面会将其改为3,你可以用同样的方法改变ft_max_word_len。

 [mysqld]
 ft_max_word_len = 150
© www.soinside.com 2019 - 2024. All rights reserved.