поиск по ключевым словам mysql - PullRequest
4 голосов
/ 14 февраля 2009

У меня есть таблица с названиями фильмов, и я хочу иметь возможность искать фильм в этой таблице. Но я хочу иметь возможность искать часть заголовка и по-прежнему возвращать результат. Например, если есть запись с названием «Квант утешения», я хочу выполнить поиск «квантового утешения» или даже «007: квант утешения», и я хочу найти эту запись. Есть ли способ сделать это?

EDIT И как мне сортировать по совпадениям? То есть строка, которая больше всего соответствует, должна быть возвращена первой.

Ответы [ 2 ]

5 голосов
/ 14 февраля 2009

Используйте Полнотекстовый поиск MySQL в логическом режиме. Если вы сделаете это при поиске «007: квантовое утешение», так как оно содержит хотя бы один соответствующий результат в столбце, который будет отображаться, вы можете упорядочить по релевантности.

SELECT *, MATCH(title) AGAINST ('quantum solace' IN BOOLEAN MODE) AS rank 
FROM films
WHERE MATCH(title) AGAINST ('quantum solace' IN BOOLEAN MODE) ORDER BY rank DESC
1 голос
/ 14 февраля 2009

Ознакомьтесь с возможностями полнотекстового поиска MySQL . После настройки полнотекстового индекса вы можете выполнять такие запросы:

SELECT * 
FROM movies
WHERE MATCH(title) AGAINST ('quantum solace' IN BOOLEAN MODE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...