postgresql Wagtail 3.x postgres搜索未返回结果

hpxqektj  于 2022-11-23  发布在  PostgreSQL
关注(0)|答案(1)|浏览(122)

我最近从Wagtail 2.13.5更新到了3.0.3。更新后,Wagtail的PageQuerySet上的search()方法没有返回任何搜索词的结果,这些搜索词显然 * 应该 * 返回结果(使用旧版本时会返回)。
例如,在2.13中,其中search_backendwagtail.contrib.postgres_search.backend.PostgresSearchBackend的示例,qswagtail.core.query.PageQuerySet的示例,下面的语句返回大量结果:

search_backend.search('popular-search-term', qs, fields=None, operator=None, order_by_relevance=True, partial_match=True)

但是在3.0.3中,search_backend现在是wagtail.search.backends.database.postgres.postgres.PostgresSearchBackend的示例,qswagtail.query.PageQuerySet的示例,对search()的相同调用将不返回任何内容(空查询集)。
qs查询集中的数据在两种情况下都是相同的,所以我可能在搜索后端的配置中遗漏了一些东西?我的“settings.py“文件有:

WAGTAILSEARCH_BACKENDS = {
    'default': {
        'BACKEND': 'wagtail.search.backends.database',
        'SEARCH_CONFIG': 'english',
    },
}

INSTALLED_APPS = [
    ...
    'wagtail.search',
    'wagtail.search.backends.database.postgres',
    ...
]

我不得不猜测'wagtail.search.backends.database.postgres'的值。AFAICT,Wagtail的文档没有提到INSTALLED_APPS应该包含什么。但是' wagtail.contrib.postgres_search'的升级前值显然是错误的,因为该模块已经被删除了。
有人知道为什么在PageQuerySet上调用search()会错误地返回没有结果吗?

r3i60tvu

r3i60tvu1#

更改搜索后端的步骤记录在www.example.com上https://docs.wagtail.org/en/stable/releases/2.15.html#database-search-backends-replaced。特别是:

  • 您应该从INSTALLED_APPS中删除wagtail.contrib.postgres_search,并且不需要在其位置添加任何内容-现有的wagtail.search应用程序就足够了
  • 切换后,需要重新运行./manage.py update_index命令以确保填充新的搜索索引。

相关问题