MySQL Match Fulltext

Im 'пытается выполнить полнотекстовый поиск с помощью 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 записей), будет ли этот метод поиска лучшим для себя, или было бы лучше установить любую другую поисковую систему, например Sphinx? Или, если нет, как показать релевантные результаты?

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
)

Это не решало вообще, но, по крайней мере, релевантность результатов, как значительно изменилось.

5
задан Riedsio 22 December 2010 в 22:52
поделиться