tripcollor
@tripcollor

Как сделать поиск по отдельным словам разбросанным по всему тексту?

Есть сайт со статьями.
Допустим есть поисковый запрос "как написать оптимизированный поиск на сайте"

Есть вот такой текст "Хотите на сайт написать поиск? Да еще, что бы он был оптимизирован? Вы попали в точку! ..."

Получается наш запрос должен найти этот текст (и еще другие удовлетворяющие условию), но не по прямому вхождению подстроки, а по отдельным словам разбросанным по всему тексту.

Я так понимаю нужно разбить строку запроса на массив слов
['как', 'написать', 'оптимизированный', 'поиск', 'на', 'сайте']
и дальше уже работать с ним.

Как написать запрос в базу данных Mysql для того чтобы реализовать такой поиск? И вообще я правильно думаю, что эту процедуру нужно положить на плечи базы данных или как то по другому =) ?
  • Вопрос задан
  • 235 просмотров
Решения вопроса 1
@bkosun
Для таких целей, обычно, используют поисковый движок, который интегрируется с MySQL:
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@nrv
Ну, для MS SQL я напишу такое, функция разбиения строки по символу разделителю пишется в строк 10, кто-то у нас на работе написал, код глядел, ничего сложного. Дольше строим sql запрос в коде (@sql varchar(max)), присваиваем в цикле and like % + select value from array where id = @счетчик_в_цикле) + %. Запускаем exec @sql. Для mysql - наверное тоже можно, сам не работал с ней, но класс БД тот же, возможности в синтаксисе должны быть.

А дальше оптимизированный not like оптимизирован))))

Нормальный поиск однозначно не на sql делается. Какого-то крокодила из костылей можно сделать. К сожалению, не могу сказать как делать нормальный поиск, но я бы поискал какую-то информации, какие-то истории "как мы сделали крутой/нормальный поиск.

Существует понятие полнотекстовый поиск, он вроде есть в Mysql и он решает красиво то что я в начале написал, но не решает проблему формы (падежей склонений и т. п.) слов.
Ответ написан
Комментировать
tsklab
@tsklab
Здесь отвечаю на вопросы.
для MS SQL я напишу такое, функция разбиения строки по символу разделителю пишется в строк 10
Есть готовая STRING_SPLIT.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы