Mysql - поиск запроса из нескольких слов - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь вернуть результаты из таблицы продуктов, когда пользователь ищет ее по имени.В настоящее время у меня есть этот запрос (упрощенный):

SELECT id, name FROM products WHERE status > 0 AND MATCH(name) AGAINST('test druzy%' IN BOOLEAN MODE) ORDER BY id desc LIMIT 0, 50

Где мой поисковый запрос был test druzy.Это результаты, которые я получаю.

results of first query

Проблема в том, что мне не нужны результаты "Test Tie Necklace", например.Mysql ищет test и druzy по отдельности.Как мне искать оба слова вместе взятые.Производительность также является проблемой, поскольку ожидается, что таблица будет очень большой.

Я также пытался использовать LIKE, но это не дает никаких результатов.

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 06 июня 2018

Вместо использования запроса MATCH следует использовать запрос LIKE.

0 голосов
/ 06 июня 2018

Для поиска обоих слов вы можете использовать оператор +, например

MATCH(name) AGAINST('+test +druzy' IN BOOLEAN MODE) 

Демо

Булевский полнотекстовый поиск

0 голосов
/ 06 июня 2018

Вы пытались уменьшить имя поля и применить LIKE следующим образом:

SELECT id, name
FROM products
WHERE status > 0
AND LOWER(name) LIKE LOWER('Test Druzy%')
ORDER BY id desc LIMIT 0, 50

РЕДАКТИРОВАТЬ: вы можете поставить LOWER на другой стороне или использовать формат кодировки без учета регистра

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...