Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как произвести релевантный поиск? / 4 сообщений из 4, страница 1 из 1
11.10.2017, 14:34
    #39534726
manking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как произвести релевантный поиск?
У меня есть таблица:

news и 4 поля
id
text
time
author


Как мне выполнить поиск в новостях и отсортировать данные по релевантности, то есть вывести новости, где указанная фраза наиболее точно встречается (но не обязательно чтобы она встречалась точно в таком виде)?

Код: sql
1.
 SELECT id FROM news WHERE text LIKE '%Российские ВКС в Сирии%' ORDER BY rel
...
Рейтинг: 0 / 0
11.10.2017, 15:21
    #39534779
Rutra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как произвести релевантный поиск?
Выполняйте такой запрос:
Код: sql
1.
select * from tab where to_tsvector('english', 'postgres elephant') @@ to_tsquery('english', 'postgres') order by ts_rank(to_tsvector('english', 'postgres elephant'), to_tsquery('english', 'postgres'));
...
Рейтинг: 0 / 0
11.10.2017, 15:45
    #39534795
manking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как произвести релевантный поиск?
RutraВыполняйте такой запрос:
Код: sql
1.
select * from tab where to_tsvector('english', 'postgres elephant') @@ to_tsquery('english', 'postgres') order by ts_rank(to_tsvector('english', 'postgres elephant'), to_tsquery('english', 'postgres'));


Спасибо.
А можно ли как то вернуть найденный текст и несколько символов до и после найденного (+- 300 символов например)?
То есть если это большая статья то не всю её возвращать а только участок с найденным текстом?

Или это надо уже программировать?
...
Рейтинг: 0 / 0
11.10.2017, 16:02
    #39534811
Rutra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как произвести релевантный поиск?
Используйте функцию ts_headline(): документация

Например:
Код: sql
1.
2.
select ts_headline('english', text, to_tsquery('english', 'postgres'), 'MinWords=3,MaxWords=9')
from tab where to_tsvector('english', text) @@ to_tsquery('english', 'postgres');
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как произвести релевантный поиск? / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]