Я использую Django встроенный полнотекстовый поиск с PostgreSQL.
В документах Django говорится, что производительность можно улучшить с помощью SearchVectorField
. Это поле содержит предварительно сгенерированный столбец ts_vector
со всеми соответствующими лексемами рядом с моделью, а не генерирует его на лету при каждом поиске.
Однако при таком подходе ts_vector
должен обновляться всякий раз, когда обновляется модель. Чтобы сохранить его синхронизацию, в документах Django предлагается использовать «триггеры», и обратитесь к документации PostgreSQL для получения более подробной информации.
Однако сами документы PostgreSQL говорят, что подход триггера теперь устаревшее . Вместо того, чтобы вручную обновлять столбец ts_vector
, лучше автоматически обновлять столбец, используя сохраненный сгенерированный столбец .
Вопрос: Как могу ли я использовать PostgreSQL рекомендуемый подход с Django?
Мое текущее решение не идеально: используйте SearchVectorField для создания столбца, а затем вручную go в PostgreSQL и замените сгенерированный столбец Django на сохраненный сгенерированный столбец. Есть ли лучший способ?