5

例如,我在我搜索的查询中搜索姓氏为Ashso 的人Ash。它会向我显示姓氏为 Ashley、Ashby 等的人……但不会显示姓氏确切为 Ash 的人

这是我的 sql 的示例:

SELECT * FROM `People`
WHERE MATCH(PersonFirstName, PersonLastName) AGAINST('ash*' IN BOOLEAN MODE) LIMIT 20

是否有某种规则,它必须超过 3 个字符或其他东西才能让 MATCH AGAINST 找到它?

4

2 回答 2

8

请参阅系统变量ft_min_word_len,它指定全文搜索要索引的单词的最小长度。它默认为 4,因此全文搜索不会找到 3 个字母的单词。有关全文搜索参数的更多信息,请参见12.9.6。微调 MySQL 全文搜索。该页面解释说:

例如,如果您想搜索三个字符的单词,您可以通过将以下行放在选项文件中来设置 ft_min_word_len 变量:

[mysqld]
ft_min_word_len=3

然后重新启动服务器并重建 FULLTEXT 索引。请特别注意此列表后面的说明中有关 myisamchk 的注释。

于 2013-07-22T20:41:11.540 回答
0

你试过这个 SELECT * FROM People WHERE MATCH(PersonFirstName, PersonLastName) AGAINST('* ash*' IN BOOLEAN MODE) LIMIT 20

于 2013-07-22T20:41:23.677 回答