231 / 12 / 3
Регистрация: 28.12.2012
Сообщений: 192
|
|
1 | |
SQL запрос для поиска словосочетаний в тексте?14.09.2013, 13:40. Показов 60225. Ответов 5
Метки нет (Все метки)
Нужен простой но нормальный поиск по БД для сайта. К примеру, что бы так же он мог искать как одиночные слова, так и словосочетания.
К примеру запрос для поиска такой: "xxx yyy" и, что бы возвращалась информация в тексте которой есть "xxx yyy", а так же в тексте которой есть хотя бы "xxx" или "yyy" или "yyy xxx" или "xxx%yyy" или "yyy%xxx" (% - в лучших традициях SQL, любая последовательность любых символов). Ну в общем обычный адекватный поиск без всяких наворотов вроде отгадывания неправильного написания слов или поиска похожих слов. Такое возможно вообще сделать при помощи одного SQL запроса?
0
|
14.09.2013, 13:40 | |
Ответы с готовыми решениями:
5
Запрос Select для поиска SQL-запрос для поиска максимального значения Как написать SQL запрос, чтобы не учитывать пустые текстбоксы для поиска в БД Подсчет определенных словосочетаний в тексте |
363 / 334 / 38
Регистрация: 29.03.2011
Сообщений: 838
|
|||||||||||
14.09.2013, 16:49 | 2 | ||||||||||
Если именно это:
1
|
231 / 12 / 3
Регистрация: 28.12.2012
Сообщений: 192
|
|
14.09.2013, 18:13 [ТС] | 3 |
Спасибо за ответ. Первый вариант возвращает строки содержащие в любом месте только слово '%xxx%' или (если таковых не найдено) строки содержащие в любом месте '%yyy%', при этом о словосочетании (которое наиболее релевантно и речи не идёт). За ссылку на FullText Index тоже огромное спасибо. Хотя он тоже не ICE, буду наверное писать все 6 вариантов (в порядке убывания релевантности) запросов с использованием LIKE.
0
|
363 / 334 / 38
Регистрация: 29.03.2011
Сообщений: 838
|
|
14.09.2013, 20:01 | 4 |
Вообще-то fulltext-индекс как раз делает именно это - ищет по сочетанием и выводит в порядке убывания релевантности + работает быстрее, чем LIKE, т.к. специально заточен под поиск в больших текстовых полях..
Ещё можно забить на поиск через БД и использовать sphinx (сам пока с ним играюсь, полноценно поюзать некуда).
0
|
231 / 12 / 3
Регистрация: 28.12.2012
Сообщений: 192
|
|
14.09.2013, 20:15 [ТС] | 5 |
FullText Index не находит если просто поменять слова местами в словосочетании, т.е. он делает, что то вроде этого LIKE "%xxx%", LIKE "%yyy%", LIKE "%xxx yyy%" при этом ещё и подсчитывает количество вхождений в процентном соотношении и не более. А как же быть с "yyy xxx" или "xxx%yyy" или "yyy%xxx" Плюс ко всему вообще плохо работает с маленькими текстами. В SQL с этим по видимому вообще туговато как и с регулярками, а казалось бы банальнейшая задача.
0
|
Заблокирован
|
|
16.09.2013, 10:30 | 6 |
LIKE это оператор сравнения строк, а не поиск.
Как работает фултекст http://dev.mysql.com/doc/inter... earch.html Что делать с короткими фразами http://dev.mysql.com/doc/refma... nsion.html
0
|
16.09.2013, 10:30 | |
16.09.2013, 10:30 | |
Помогаю со студенческими работами здесь
6
Выделение определённых слов и словосочетаний в тексте Посчитать количество слов или словосочетаний встречающихся в тексте SQL-запрос поиска по дате SQL запрос поиска по дате Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |