У меня есть дизайн таблицы SQL, как указано ниже
*-----------------------------------------
| id | title |
| -- | -----------------------------------|
| 1 | This is nice pen looking good |
| 2 | This is nice pen looking elegent |
| 3 | This is nice pen looking great |
| 4 | This is nice pen looking best. |
------------------------------------------
Пример запроса: Select * from table where title LIKE '%looking%'
когда я пытаюсь найти слово «ищу», используя (например, запрос) или используя (регулярные выражения), например пример запроса, я получаю полные результаты строки, упомянутые ниже
Полученные результаты
*------------------------------------
| title |
| -----------------------------------|
| This is nice pen looking good |
| This is nice pen looking elegent |
| This is nice pen looking great |
| This is nice pen looking best. |
-------------------------------------
Что я хочу?
Мне нужны предиктивные поисковые слова (неполная строка)
Как я могу получить нижеуказанные результаты, выполнив поиск слова (поиск) с использованием SQL.
*-------------------
| title |
| ------------------|
| looking good |
| looking elegent |
| looking great |
| looking best. |
--------------------
Пожалуйста, предложите, как я могу написать запрос для получения этих типов результатов? Спасибо
означает, что когда я пытаюсь найти слово «ищу», мне нужен результат точного совпадения слова и следующего слова искомого слова. Поисковое слово: "выглядит" результаты, которые я хочу "выглядеть хорошо", "выглядеть элегантно", "выглядеть великолепно" и т. д.
Интересный вопрос, но неправильный набор инструментов. Mysql — это база данных, а не инструмент текстовой аналитики. У него нет концепции слов. Очевидно, вы можете комбинировать набор строковых функций и добиться близкого прокси того, что вы хотите, в mysql, но производительность будет ужасной.
Вы можете получить первую следующую работу, используя substring_index()
:
Select t.*,
substring_index(substring_index(concat(' ', title, ' '), ' looking ', -1), ' ', 1) as next-word
from table
where title LIKE '%looking%';
Здесь db<>рабочий пример.
И я могу привести несколько случаев, когда это решение не будет работать с реальным текстом. Вы слишком упрощаете это.
Объясните, пожалуйста, что вы подразумеваете под словами «предиктивный поиск».