Как искать наиболее подходящий ответ в MySQL/PHP по ключевым словам вопроса?
Здравствуйте!
Есть база данных MySQL, которая имеет столбцы: keywords и answer.
В столбце keywords содержатся массивы ключевых слов в JSON-формате. Это могут быть как слова, так и фразы, например: ["тест", "тестовый", "тестовая фраза"]
или ["фраза"]
В столбце answer содержатся ответы на эти ключевые слова.
Есть сообщение: "тестовая фраза", как найти для неё более подходящий ответ, учитывая, что у нас есть вопрос с ключевым словом "фраза" и с ключевой фразой "тестовая фраза"?
Первая мысль - разбить фразу по слову и искать каждый ответ по "LIKE %тестовая% AND LIKE %фраза%", но в таком случае, если не будет в записи "%тестовая%", то база ничего не вернёт, хотя должны была бы найти совпадение хотя бы для "фраза".
для тестовая фраза боле подходящий будет тестовая фраза, а не фраза
Поэтому я бы сначала искал по точному соответствию, и если его нету и фраза - фраза, а не слово, то тогда бы уже разбивал по пробелам.
Возможно, в данном случае нужна реализация полнотекстового поиска. И не обязательно средствами MySQL , есть и более мощные решения, типа Sphinx. Подобные движки "умеют" и поиск словоформ, поиск по частям слов, по словам с ошибками итд ( например, будет искаться и "тестовые фразы" , 'тескстАвые фразы'). Собственная реализация подобного функционала своими силами задачка не ахти )))