我有一个非常简单的查询似乎没有给我我想要的结果。我正在尝试允许用户使用全文搜索来搜索其名称,地址或城市的餐馆。
这是我的查询:
SELECT ESTAB_NAME, ESTAB_ADDRESS, ESTAB_CITY
FROM restaurant_restaurants rr
WHERE
MATCH (rr.ESTAB_NAME, rr.ESTAB_ADDRESS, rr.ESTAB_CITY)
AGAINST ('*new* *hua*' IN BOOLEAN MODE)
LIMIT 0, 500
New Hua是餐桌内的餐厅。但是当我搜索' ting ho 时,我会得到我期望的结果。
有谁知道发生了什么事? 我在MySQL 5.0.41版本上使用MyISAM存储引擎
答案 0 :(得分:4)
最有可能的是,全文索引设置将最小字长设置为4 - 我相信这是默认值。您需要更改这些设置,即使是BOOLEAN模式(根据http://dev.mysql.com/doc/refman/5.1/en/fulltext-boolean.html)。请查看http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html以了解要更改的设置。
答案 1 :(得分:1)
我认为Michael是对的,但是,你可能想删除*****字符,除非它实际上在你正在搜索的标题中。 MATCH AGAINST不需要“全部匹配”类型的参数。
答案 2 :(得分:0)
我猜:“新”是Mysql Default Stop Word。请参阅Michael Madsen的第二个链接,了解如何更改停用词列表并重新获得餐厅。