MySQL Fulltext не найдет строки - PullRequest
0 голосов
/ 05 января 2012

У меня есть веб-сайт для поиска автомобилей, и когда я настроил поисковую систему, он не дал никакого динамического поиска.Например, у него 500 автомобилей, и ~ 5 - «Тойота Ист».

Так что, когда я ищу «Ист», я не получаю результатов.(См. Запрос)

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  

Но если я буду искать «Toyota Ist», я получу много результатов Toyota.И Ist автомобиль не обязательно занимает первое место в списке.

Так что проблема заключается в том, как мне настроить его так, чтобы, если кто-то ищет только одно слово, скажем, модель машины, он возвращал строку... и как он может вернуть строку, если они выполняют поиск по нескольким словам, таким как «toyota camry», хотя на самом деле это похоже на работу.

Все поля MATCH: FULLTEXT, aCarModel и т. д. хранят модель автомобилей, и ониобычно это просто одно слово типа «Ist» или «Camry».

Спасибо.

1 Ответ

1 голос
/ 05 января 2012

Если более 50% автомобилей принадлежат «Тойоте», то «Тойота» будет игнорироваться при поиске. Кроме того, FULLTEXT не индексирует слова длиной до 4 букв.

Ограничение 50% и другие биты настройки о FULLTEXT 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

...