0

这是我执行搜索的代码

SELECT d.deal_id,
       d.deal_title,
       d.friendly_url
FROM wp_deals AS d
WHERE MATCH (d.deal_title) AGAINST ('Ultimate Revitalisation Kit' IN BOOLEAN MODE)
GROUP BY d.deal_id

它工作正常。

但是当我搜索 Kit 时,它变成了

SELECT d.deal_id,
       d.deal_title,
       d.friendly_url
FROM wp_deals AS d
WHERE MATCH (d.deal_title) AGAINST ('Kit' IN BOOLEAN MODE)
GROUP BY d.deal_id

并且没有给出任何结果,尽管之前的搜索结果中有 kit。我不是这类搜索查询的专家。但我不得不问,搜索查询不应该使用like 关键字,即like '%kit%'。所以这就是我使用对抗和匹配的原因。有人精通这种高级查询吗?你能让它成为一个出色的搜索查询吗?请完善。所以它看起来比简单的查询更好。

4

1 回答 1

1

您需要更改 mySQL 安装的 /etc/my.conf。默认情况下,全文搜索仅使用 4 个字符作为最小字长。您需要将其更改为 3。

ft_min_word_len = 3

您还需要重建表上的全文索引。您可以通过运行 REPAIR 命令来执行此操作:

REPAIR TABLE my_table QUICK;

或者您可以删除并重新创建索引。

这样做并重新启动mysql。您的搜索现在可以工作了。

于 2013-01-10T13:23:47.153 回答