Я могу настроить PostgreSQL программно для не устранения стоп-слов в полнотекстовом поиске?

спецификация для встроенного типа словаря отрицает любое сохранение порядка, лучше думать о словаре как о незаказанном наборе key: value пары...

можно хотеть проверить OrderedDict модуль , который является реализацией заказанного словаря с Ключевым Порядком Вставки.

35
задан Flimm 31 May 2018 в 13:58
поделиться

2 ответа

Согласно вашему комментарию к предыдущему ответу, вы можно легко переключаться между использованием без стоп-слов и всех стоп-слов . Вы можете добиться этого с помощью настраиваемой конфигурации поиска:

(1) Вы можете создать пользовательский словарь без использования файла стоп-слов, например:

CREATE TEXT SEARCH DICTIONARY english_stem_nostop (
    Template = snowball
    , Language = english
);

Обратите внимание, что в приведенном выше примере я пропустил параметр StopWords .

(2) Затем создайте новую конфигурацию для использования вашего нового словаря:

CREATE TEXT SEARCH CONFIGURATION public.english_nostop ( COPY = pg_catalog.english );
ALTER TEXT SEARCH CONFIGURATION public.english_nostop
   ALTER MAPPING FOR asciiword, asciihword, hword_asciipart, hword, hword_part, word WITH english_stem_nostop;

(3) Затем при поиске укажите конфигурацию, которую вы хотите использовать (в качестве альтернативы вы можете каждый раз изменять параметр default_text_search_config ) , например:

SELECT
    title
FROM
    articles
WHERE
    to_tsvector('english_nostop', COALESCE(title,'') || ' ' || COALESCE(body,''))
    @@ to_tsquery('english_nostop', 'how & to');

Вы можете указать только 'english' в приведенном выше SQL, чтобы использовать обычную конфигурацию.

Обратите внимание , что в этом примере использование стандартной конфигурации приведет к уведомлениям, потому что есть только стоп-слова.


Однако имейте в виду следующее:

  • Если вы используете индексы, вам понадобится два - по одному для каждой конфигурации. (см. эти документы: таблицы поиска и триггеры ).
  • Дважды проверьте, какие токены синтаксического анализатора вы хотите использовать это сопоставление в соответствии с шагом № 2, выше (см. Парсеры ).
49
ответ дан 27 November 2019 в 07:15
поделиться

Нет, стоп-слова можно настроить только через этот файл. У вас может быть функция на стороне сервера, которая изменяет файл, но для этого требуется, чтобы файл был доступен для записи пользователем службы postgres, что вам, вероятно, не нужно.

3
ответ дан 27 November 2019 в 07:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: