【发布时间】:2016-10-18 00:23:24
【问题描述】:
我们在 django 1.10 中使用搜索,我们需要使用 trigram 搜索的用户排名搜索。
我们的代码是这样的:
def get_queryset(self):
search = self.request.GET.get('text', '')
vector = SearchVector('name',weight='A',
config=settings.SEARCH_LANGS[
settings.LANGUAGE
],
) + SearchVector(
'content',
weight='B',
config=settings.SEARCH_LANGS[
settings.LANGUAGE
],
)
query = SearchQuery(search)
return Article.objects.annotate(
rank=SearchRank(
vector,
query
),
similarity=TrigramSimilarity(
'name', search
) + TrigramSimilarity(
'content', search
),
).filter(
rank__gte=0.3
).filter(
similarity__gt=0.3
).order_by(
'-similarity'
)[:20]
但是这段代码没有返回任何查询,不使用三元组我们会遇到问题,但是,将它们结合起来我们无法得到查询。
我们如何在 django 1.10 中结合 trigram 和排名搜索?
【问题讨论】:
标签: python django postgresql