Мне нужна помощь в создании простой поисковой системы для веб-сайта. Основная идея заключается в том, что пользователь вводит строку в строке поиска, которая будет сравнивать в базе данных key_word
и получить результаты.Как создать поисковую систему для веб-сайта с использованием SQL-сервера
Допустим, у меня есть следующие таблицы в базе данных SQL Server:
|----|----------|----------------------|
| ID | URL | key_word |
|----|----------|----------------------|
| 1 | url1.com | cat short red NYC |
| 2 | url2.com | tall blue LA |
| 3 | url3.com | skinny NYC green |
| 4 | url4.com | cat black get |
|----|----------|----------------------|
Теперь в строке поиска, позволяет сказать, что пользователь хочет найти ниже строку «получить красную кошку из Нью-Йорка». Я хочу найти это в базе данных «key_word».
String key = "get red cat from NYC"
То, что я пробовал:
До сих пор у меня есть следующие ниже запрос для поиска из базы данных. Это хорошо, если пользователь хочет найти только одно слово. но строковый «ключ» здесь не работает, и он вернет 0 результат. Мне нужна идея, поэтому я могу сделать этот лучший запрос.
SELECT *
FROM [SearchTable]
WHERE [key_Word] LIKE % key %;
Что я хочу:
Я хочу изменить этот запрос SQL-сервера, так что вернуть ID = 1,3,4.
Итак, другими словами. Я хочу взять эту строку:
String key = "get red cat from NYC"
и первый поиск в базе данных слова «получить». он не появляется, поэтому переходите к следующему слову. Следующее слово «red», это отображается в ID = 1. Следующее слово «cat», это отображается в ID = 1,4. Следующее слово «from», это не отображается ни в одной строке. Следующее слово - «NYC», это отображается в ID = 1,3.
положите все id вместе, и вы получите ID = 1,1,4,1,3.
чем я хочу его сортировать так, чтобы ID = 1 отображался вверху, а ID = 3,4 может быть у кнопки, так как они привязаны.
Я надеялся сделать это только одним SQL-запросом, потому что, если я буду продолжать подключаться к базе данных, то скорость тоже снизится. Итак, я думал о некоторых функциях SQL Server?
Почему ваше ключевое слово не атомное? Как будет медленно, а не SARGable. Индексы не могут использоваться. – lad2025
Почему вы не используете полнотекстовое индексирование? –