Полнотекстовый поиск по нескольким столбцам
Есть условная таблица normalized_documents:
Column | Type | Collation | Nullable | Default
--------------------+------------+-----------+----------+----------------------------------------------
id | integer | | not null | nextval('indexing_results_id_seq'::regclass)
document_id | integer | | |
normalized_title | tsvector | | not null |
normalized_content | tsvector | | not null |
С помощью функции to_tsquery() будет производиться полнотекстовый поиск по двум столбцам: normalized_title и normalized_content (кол-во колонок в запросе будет всегда равно двум и меняться не будет). Есть 3 вопроса:
- Как эффективнее сформировать индекс GIN? Создать 2 индекса по 2 колонкам или же один составной?
- Возможно ли задать вес столбцам при поиске? Например, чтобы колонка
normalized_titleимела вес 2, а вес результатов изnormalized_contentбыл бы равен 1. - Как эффективнее всего выполнять полнотекстовый поиск по 2 столбцам? Есть ли наиболее оптимальное (ну или правильное) решение? Пример запроса ниже.
Вот примерный запрос, который я планирую использовать для поиска:
-- ищем упоминания слов "договор" или "участник" в двух столбцах
SELECT document_id FROM normalized_documents WHERE normalized_title || normalized_content @@ to_tsquery('russian', 'договор | участник');
Буду очень признателен любой информации по теме.