2012-06-01 2 views
1

Я использую MATCH AGAINST для поиска по нескольким полям в базе данных, но у меня возникают проблемы с результатами.Проблемы с MySQL MATCH AGAINST

Этот запрос:

MATCH(productname, stockcode, productdescription, additional_1, additional_2, additional_3, additional_4, additional_5, additional_6, additional_7, additional_8) AGAINST ('red* tile*' IN BOOLEAN mode) 

Из запроса, я хотел бы как «красный%» или «плитки%» результаты, но это возвращает записи, где «Обязательный» слово включено, которое я не хочу.

Можно ли это сделать?

+0

ли записи, возвращаемые содержат '' * плитку? – Quassnoi

ответ

2

Возможно, у вас есть ft_min_word_len значение по умолчанию 4.

red не получает индексирование или соответствие в этой настройке и просто игнорируется в запросах.

Сменив ft_min_word_len на меньшее значение, если вы хотите соответствовать red (при необходимости его нужно восстановить).

См. this fiddle.

Update:

Если вы хотите, оба слова совпавших, используйте:

AGAINST ('+red* +tile*' IN BOOLEAN mode) 
+0

Я изменил это значение на 2, но получил те же результаты ... – JezB

+0

@JezB: если у вас есть полный текст в полях, вам нужно его перестроить. – Quassnoi

+0

Это исправлено - спасибо! Теперь просто нужно сортировать данные :) – JezB

Смежные вопросы