我最近从Wagtail 2.13.5更新到了3.0.3。更新后,Wagtail的PageQuerySet
上的search()
方法没有返回任何搜索词的结果,这些搜索词显然 * 应该 * 返回结果(使用旧版本时会返回)。
例如,在2.13中,其中search_backend
是wagtail.contrib.postgres_search.backend.PostgresSearchBackend
的示例,qs
是wagtail.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
的示例,qs
是wagtail.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()
会错误地返回没有结果吗?
1条答案
按热度按时间r3i60tvu1#
更改搜索后端的步骤记录在www.example.com上https://docs.wagtail.org/en/stable/releases/2.15.html#database-search-backends-replaced。特别是:
wagtail.contrib.postgres_search
,并且不需要在其位置添加任何内容-现有的wagtail.search
应用程序就足够了./manage.py update_index
命令以确保填充新的搜索索引。