точное совпадение слов с различными комбинациями из заданной строки запроса в полнотекстовом поиске mysql

как сделать так, чтобы таблица myisam возвращала результаты, соответствующие различным сочетаниям слов и ничего лишнего из заданной строки поиска.

Я использую следующий запрос в своей таблице тегов

SELECT * FROM tags WHERE MATCH (name) AGAINST('word1 word2'));

и таблица может содержать следующие строки

  • 1 слово1 слово2 слово3
  • 2 слова 2 слова 3 слова 4 слова
  • 3 слово1
  • 4 слово 3 слово 2
  • 5 слово2
  • 6 слово2 слово1
  • 7 слово1 слово2
  • 8 слово3 слово4

мне нужны только следующие строки в качестве результатов

  • 3 слово1
  • 5 слово2
  • 6 слово2 слово1
  • 7 слово1 слово2

но фактический результат, который я получаю,

  • 1 слово1 слово2 слово3
  • 2 слова 2 слова 3 слова 4 слова
  • 3 слово1
  • 4 слово 3 слово 2
  • 5 слово2
  • 6 слово2 слово1
  • 7 слово1 слово2

как этого добиться ??

Я пробовал поиск в логическом режиме с +, но он делает указанные слова + обязательными в результатах поиска, чего я не хочу.


person Anil Kumar    schedule 04.12.2012    source источник


Ответы (2)


Это может быть поздний ответ, но это решит проблему. Используйте IN BOOLEAN MODE MySQL FTS.

SELECT * FROM `tags` WHERE MATCH (`name`) AGAINST('+word1 +word2' IN BOOLEAN MODE)

Взгляните на полнотекстовый логический режим

Примечание. При реализации этой функции MySQL использует то, что иногда называют подразумеваемой логической логикой, в которой

+ означает AND

- означает НЕ

[no operator] подразумевает ИЛИ

person Vinothkumar Arputharaj    schedule 09.03.2017

Я не думаю, что mysql FULLTEXT поддерживает то, что вы хотите. Я мог делать только то, что ты хочешь, с

SELECT * 
FROM tags 
where (name LIKE 'word1' OR name LIKE 'word2' OR name LIKE 'word1 word2' or name LIKE 'word2 word1') ;

Подробнее о полнотекстовом режиме читайте здесь mysql fulltext

person user1965598    schedule 10.01.2013