Поиск с использованием нескольких ключевых слов в PHP / MySql - PullRequest
1 голос
/ 08 февраля 2012

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

Пример:

таблица для пользователей:

ID           Name                  Skills
 1       Joe Smith         Cooking Dancing Painting 
 2       John Williams     Drawing Fishing
 3       Beth Gray         Cooking Swimming 
 4       Martin Torres     Dancing Repairing CPR
 5       Alice Lee         Cooking Drawing Welding

Если вы выполняете поиск по слову «Готовка», он вернет 3 результата: 1,3 и 5, что нормально. Однако, если вы выполняете поиск с использованием «Рисование кулинарии», он вернет только 1 результат, то есть 5 с кулинарией и рисованием. Я пытаюсь добиться того, чтобы он вернул ВСЕХ людей, у которых есть хотя бы 1 навык в keywords, в данном случае 1,2,3 и 5.

Спасибо.

1 Ответ

2 голосов
/ 08 февраля 2012

Вы должны использовать Mysql Fulltext функцию поиска.

Вот запрос, который вы можете использовать в своем коде с полным текстом:

SELECT * FROM your_table_name
WHERE MATCH (yourcolumn1,yourcolumn2,...)
AGAINST ('your texts to search');

Примечание: вы должны применить fulltext index к столбцам, в которых вы хотите искать.

Вы можете сделать запрос с помощью like с комбинацией AND OR Условия:

SELECT * FROM table_name WHERE (skills LIKE '%Cooking%' AND skills LIKE '%Dancing%' ... )

OR

SELECT * FROM table_name WHERE (skills LIKE '%Cooking%' OR skills LIKE '%Dancing%' ... )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...