Spec-Zone.ru › Wagtail 2

Полнотекстовый поиск PostgreSQL

Предупреждение

Этот модуль contrib предоставляет бэкенд поиска, использующий возможности полнотекстового поиска PostgreSQL.

Предупреждение

Возможности:

  • Поддерживает все возможности поиска, доступные в Wagtail.
  • Легко устанавливается и не требует дополнительных зависимостей или сервисов.
  • Обеспечивает отличную производительность для сайтов до 200 000 страниц и приемлемую для сайтов до миллиона страниц.
  • Более быстрый процесс переиндексации, чем Elasticsearch, если вы используете PostgreSQL 9.5 или выше.

Недостатки:

  • Частичное соответствие (SearchField(partial_match=True)) не поддерживается
  • SearchField(boost=…) частично поддерживается, так как PostgreSQL поддерживает только четыре различных значения усиления. Если вы используете пять или более различных значений усиления на вашем сайте, могут возникнуть незначительные неточности.
  • При указании полей для поиска индекс не используется, поэтому на больших сайтах поиск будет медленным.
  • Также при указании полей для поиска невозможно выполнить поиск по конкретному методу.

Установка

Добавьте 'wagtail.contrib.postgres_search', в любое место вашей INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    'wagtail.contrib.postgres_search',
    ...
]

Затем настройте Wagtail для использования его в качестве бэкенда поиска. Присвойте ему псевдоним ‘default’, если вы хотите, чтобы это был по умолчанию бэкенд поиска:

WAGTAILSEARCH_BACKENDS = {
    'default': {
        'BACKEND': 'wagtail.contrib.postgres_search.backend',
    },
}

После установки модуля выполните python manage.py migrate для создания необходимой таблицы postgres_search_indexentry.

Затем вам нужно индексировать данные внутри этого бэкенда, используя команду update_index. Вы можете повторно использовать эту команду всякий раз, когда захотите. Однако, после первого использования она не потребуется, так как движок поиска автоматически обновляется при изменении данных. Чтобы отключить это поведение, см. AUTO_UPDATE.

Настройка

Язык/настройка поиска PostgreSQL

Используйте дополнительный 'SEARCH_CONFIG' ключ для определения конфигурации поиска PostgreSQL, которая должна использоваться. Например:

WAGTAILSEARCH_BACKENDS = {
    'default': {
        'BACKEND': 'wagtail.contrib.postgres_search.backend',
        'SEARCH_CONFIG': 'english',
    }
}

Как можно понять, конфигурация поиска PostgreSQL в основном используется для определения правил для языка, в данном случае английского. Конфигурация поиска включает в себя набор алгоритмов (парсеров и анализаторов) и языковых спецификаций (стоп-слова, стеминг, словари, синонимы, тезаурусы и т.д.).

Некоторые конфигурации поиска уже определены по умолчанию в PostgreSQL. Вы можете перечислить их, используя sudo -u postgres psql -c "\dF" в оболочке Unix или с помощью этого запроса SQL: SELECT cfgname FROM pg_catalog.pg_ts_config.

Эти предопределённые конфигурации поиска неплохи, но они базовые по сравнению с коммерческими поисковыми системами. Если вам нужна лучшая поддержка вашего языка, вам нужно будет создать собственную конфигурацию поиска PostgreSQL. Смотрите документацию PostgreSQL для примера, списка парсеров и руководства по использованию словарей.

Атомарная перестройка

Как и бэкенд Elasticsearch, этот бэкенд поддерживает ATOMIC_REBUILD:

WAGTAILSEARCH_BACKENDS = {
    'default': {
        'BACKEND': 'wagtail.contrib.postgres_search.backend',
        'ATOMIC_REBUILD': True,
    }
}

Это почти бесполезно с этим бэкендом. В Elasticsearch все данные удаляются перед перестройкой индекса. Но в этом бэкенде PostgreSQL удаляются только объекты, которых больше нет в базе данных. Затем индекс постепенно обновляется без момента, когда индекс пустой.

Однако, если вы хотите быть полностью уверены, что при обновлении индекса ничего не пойдёт не так, вы можете использовать атомарную перестройку. Индекс будет перестроен, но ни у кого не будет доступа к нему до завершения переиндексации. Если во время операции произойдёт ошибка, все изменения в индексе будут отменены, как будто переиндексация никогда не начиналась.

  • Предыдущая Обращение адресов ModelAdmin
  • Следующая Рекомендованные результаты поиска

Содержание страницы

  • Полнотекстовый поиск PostgreSQL
    • Установка
    • Настройка
      • Язык/настройка поиска PostgreSQL
      • Атомарная перестройка

© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v2.16.3/reference/contrib/postgres_search.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API