TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/

Как искать наиболее подходящий ответ в MySQL/PHP по ключевым словам вопроса?

Здравствуйте!
Есть база данных MySQL, которая имеет столбцы: keywords и answer.
В столбце keywords содержатся массивы ключевых слов в JSON-формате. Это могут быть как слова, так и фразы, например:
["тест", "тестовый", "тестовая фраза"]
или
["фраза"]
В столбце answer содержатся ответы на эти ключевые слова.
Есть сообщение: "тестовая фраза", как найти для неё более подходящий ответ, учитывая, что у нас есть вопрос с ключевым словом "фраза" и с ключевой фразой "тестовая фраза"?

Первая мысль - разбить фразу по слову и искать каждый ответ по "LIKE %тестовая% AND LIKE %фраза%", но в таком случае, если не будет в записи "%тестовая%", то база ничего не вернёт, хотя должны была бы найти совпадение хотя бы для "фраза".
  • Вопрос задан
  • 200 просмотров
Решения вопроса 2
rim89
@rim89
программист-велосипедист
С версии 5.7 mySql поддерживается JSON
как найти для неё более подходящий ответ

для тестовая фраза боле подходящий будет тестовая фраза, а не фраза
Поэтому я бы сначала искал по точному соответствию, и если его нету и фраза - фраза, а не слово, то тогда бы уже разбивал по пробелам.
Ответ написан
Комментировать
coderisimo
@coderisimo
Возможно, в данном случае нужна реализация полнотекстового поиска. И не обязательно средствами MySQL , есть и более мощные решения, типа Sphinx. Подобные движки "умеют" и поиск словоформ, поиск по частям слов, по словам с ошибками итд ( например, будет искаться и "тестовые фразы" , 'тескстАвые фразы'). Собственная реализация подобного функционала своими силами задачка не ахти )))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы