當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。