MySQL алгоритм поиска по нескольким ключевым словам - PullRequest
0 голосов
/ 15 декабря 2010

Может кто-нибудь дать мне идеи или рекомендации о том, как построить алгоритм множественного поиска?

Например, у меня есть таблица продуктов в моей базе данных MySQL, и я хотел бы иметь возможность поиска по нескольким ключевым словам в столбцах title и description.Эти ключевые слова могут содержать несколько слов, например: «синий электрический тостер Bosch».

Каков оптимальный метод для достижения этой цели?

До сих пор я думал о: 1. Использовании LIKE "% $ Keywords%" в MySQL 2. Разделении ключевых слов по пробелам и поиске по каждому отдельному слову, но я думаю, что лучше всего искатьдля всего ключевого слова.

Ответы [ 3 ]

2 голосов
/ 15 декабря 2010

Используйте полнотекстовое индексирование

1 голос
/ 15 декабря 2010

Используя LIKE с процентами в начале и в конце, вы будете иметь подстановочный знак по обе стороны от вашего ключевого слова. Так что это должно получить вам то, что вы хотите.

Для поиска по всей фразе:

WHERE (Title LIKE "%blue electric bosch toaster machine%" OR Body LIKE "%blue electric bosch toaster machine%")

Или для поиска каждого ключевого слова в отдельности (будет возвращено больше результатов):

WHERE (Title LIKE "%blue%" OR Title LIKE "%electric%" OR Title LIKE "%bosch%" OR Title LIKE "%toaster%" OR Title LIKE "%machine%" OR Body LIKE "%blue%" OR Body LIKE "%electric%" OR Body LIKE "%bosch%" OR Body LIKE "%toaster%" OR Body LIKE "%machine%")

Если вы выполняете поиск по массиву данных, а распространенные методы, такие как LIKE, слишком медленные, я рекомендую использовать что-то вроде Sphinx - это ОЧЕНЬ быстро при полнотекстовом поиске.

1 голос
/ 15 декабря 2010

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

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

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