在Django中使用与SearchVector和SearchQuery的unaccent

问题描述 投票:5回答:1

我在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)

那么,我做错了什么?

django postgresql full-text-search
1个回答
3
投票

你不能在'SearchVector'中使用'unaccent',但你必须在PostgreSQL中定义一个新的“unaccented”配置。

  1. 如果你错过了,installs the unaccent extension
  2. 在PostgreSQL中创建您的非重音字典或在此SQL中使用qazxsw poi: qazxsw poi
  3. 在Django查询中使用此配置: empty migrations

你可以在各种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; 上的SearchVector('title','abstract', config='french_unaccent') SearchQuery(word, config='french_unaccent') 上找到更多关于此类配置的信息

© www.soinside.com 2019 - 2024. All rights reserved.