MySQL Fulltext将找不到行

时间:2012-01-05 19:45:57

标签: php mysql search full-text-search match

我有一个汽车搜索网站,当我设置搜索系统时,它无法进行任何动态搜索。例如,它们有500辆汽车,5辆是“丰田汽车”。

所以当我搜索'Ist'时,我没有得到任何结果。 (见查询)

SELECT *,MATCH(aTitle, aDescribe, aCarModel, aCarWheels, aCarStereo, aCarIntTrim, aCarTrans, aCarDrive, aCarFuel, aCarPlate, aCarColour) AGAINST('toyota ist' IN BOOLEAN MODE) AS score FROM at_auction WHERE status = '1' AND aCarYear >= 1992 AND aCarYear <= 2012 AND startBid >= 0 AND startBid <= 20000 AND MATCH(aTitle, aDescribe, aCarModel, aCarWheels, aCarStereo, aCarIntTrim, aCarTrans, aCarDrive, aCarFuel, aCarPlate, aCarColour) AGAINST('toyota ist' IN BOOLEAN MODE) AND closeTime >= '201201060842' ORDER BY opt_feature DESC, score DESC, score DESC LIMIT 0,10  

但如果我搜索'丰田Ist',我会得到很多丰田赛的结果。而且Ist汽车在名单中并不是很高。

所以问题的基础是我如何设置它,以便如果有人只搜索一个单词,比如汽车模型,它将返回行...以及如果他们搜索多个单词它如何返回行就像'丰田凯美瑞'一样,虽然这实际上似乎有效。

MATCH字段都是FULLTEXT和aCarModel等存储汽车模型,它们通常只是一个单词,如'Ist'或'Camry'。

感谢。

1 个答案:

答案 0 :(得分:1)

如果超过50%的汽车是“丰田”,那么“丰田”将在搜索中被忽略。此外,FULLTEXT不会将4个字母以下的单词编入索引。

关于FULLTEXT的50%限制和其他调整位 http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

最小字长 http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_ft_min_word_len