Я пытаюсь выполнить полнотекстовый поиск с помощью mysql, чтобы найти строку.Проблема в том, что он возвращает странные результаты в первую очередь.
Например, строка 'passat 2.0 tdi':
AND MATCH (
records_veiculos.titulo, records_veiculos.descricao
)
AGAINST (
'passat 2.0 tdi' WITH QUERY EXPANSION
)
возвращает это как первый результат (остальныехорошо):
Volkswagen Passat Variant 1.9 TDI- ANO 2003
что неверно, так как в этом примере нет "2.0".
Что бы это могло быть?
edit : Кроме того, поскольку это, вероятно, будет большая база данных (ожидающая до 500 000 записей), этот метод поиска будет наилучшим для себя, или лучше установить какую-либодругой поисковик, как Сфинкс?Или, если это не так, как показать релевантные результаты?
edit2 : Для записи, несмотря на то, что вопрос помечен как отвеченный, проблема с разделителями MySQL сохраняется, поэтому еслиу любого есть предложение о том, как избежать разделителей, оно будет оценено и стоит 500 ставок на карту.Решение, которое я нашел для увеличения набора результатов, состояло в том, чтобы заменить WITH QUERY EXPANSION на IN BOOLEAN MODE, используя операторы, чтобы заставить двигатель получить нужные мне слова, например:
AND MATCH (
records_veiculos.titulo, records_veiculos.descricao
)
AGAINST (
'+passat +2.0 +tdi' IN BOOLEAN MODE
)
Это не решило вообще, но, по крайней мере, значимость результатов значительно изменилась.