当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Django SearchRank用法及代码示例


本文介绍 django.contrib.postgres.search.SearchRank 的用法。

声明

class SearchRank(vector, query, weights=None, normalization=None, cover_density=False)

到目前为止,我们已经返回了向量和查询之间可能匹配的结果。您可能希望按某种相关性对结果进行排序。 PostgreSQL 提供了一个排名函数,它考虑了查询词在文档中出现的频率、词在文档中的接近程度以及文档中它们出现的位置的重要性。比赛越好,排名的值就越高。按相关性排序:

>>> from django.contrib.postgres.search import SearchQuery, SearchRank, SearchVector
>>> vector = SearchVector('body_text')
>>> query = SearchQuery('cheese')
>>> Entry.objects.annotate(rank=SearchRank(vector, query)).order_by('-rank')
[<Entry: Cheese on Toast recipes>, <Entry: Pizza recipes>]

有关 weights 参数的说明,请参阅加权查询。

cover_density参数设置为True以启用覆盖密度排名,即考虑匹配查询词的接近度。

normalization 参数提供一个整数以控制等级归一化。此整数是位掩码,因此您可以组合多种行为:

>>> from django.db.models import Value
>>> Entry.objects.annotate(
...     rank=SearchRank(
...         vector,
...         query,
...         normalization=Value(2).bitor(Value(4)),
...     )
... )

PostgreSQL 文档包含有关 different rank normalization options 的更多详细信息。

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.contrib.postgres.search.SearchRank。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。