powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как произвести релевантный поиск?
4 сообщений из 4, страница 1 из 1
Как произвести релевантный поиск?
    #39534726
manking
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть таблица:

news и 4 поля
id
text
time
author


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

Код: sql
1.
 SELECT id FROM news WHERE text LIKE '%Российские ВКС в Сирии%' ORDER BY rel
...
Рейтинг: 0 / 0
Как произвести релевантный поиск?
    #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
Как произвести релевантный поиск?
    #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
Как произвести релевантный поиск?
    #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
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как произвести релевантный поиск?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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