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

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

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

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

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

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

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