我已经在 Django 中安装了 UnaccentExtension 但在使用它进行搜索时遇到问题:
vector = SearchVector('title__unaccent', 'abstract__unaccent')
query = SearchQuery(word) | SearchQuery(word2)
files = Doc.objects.annotate(rank=SearchRank(vector, query)).order_by('-rank')
这是错误:
无法将关键字“unaccent”解析为字段。不允许加入“标题”。
最简单的搜索效果很好:
Doc.objects.filter(title__unaccent=word)
那么,我做错了什么?
您不能在“SearchVector”中使用“unaccent”,但必须在 PostgreSQL 中定义一个新的“unaccented”配置。
- 如果你错过了,安装非重音扩展.
-
在 PostgreSQL 中创建非重音字典或使用空迁移使用这个 SQL:
CREATE TEXT SEARCH CONFIGURATION french_unaccent( COPY = french );
ALTER TEXT SEARCH CONFIGURATION french_unaccent
ALTER MAPPING FOR hword, hword_part, word
WITH unaccent, french_stem;
-
在 Django 查询中使用此配置:
SearchVector('title','abstract', config='french_unaccent')
SearchQuery(word, config='french_unaccent')
您可以在中找到有关此类配置的更多信息PostgreSQL 官方文档在各种articles
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)