簡體   English   中英

Elasticsearch:給長標題更高的分數

[英]Elasticsearch: Give higher score to long title

我有一個 Elasticsearch 數據庫,其中所有文檔都有一個標題字段並由該字段查詢。

默認情況下,Elasticsearch 搜索給帶有短標題的文檔更高的分數。 但是,在我的用例中,短標題是無關緊要的。

例如,當我搜索“深度學習”時,第一個結果是

  • “深度學習”
  • “機器學習和深度學習”
  • “帶記憶的半監督深度學習”

我希望標題為“帶記憶的半監督深度學習”的文檔出現在標題為“深度學習”的文檔之前。

是否有任何解決方案可以在不更改映射的情況下實現這一目標?

謝謝

最好的方法是計算內容長度 ant 攝取時間,將其保存在一個字段中並將其與 function 分數查詢一起使用。

{
  "query": {
    "function_score": {
      "query": {
        "match": { "title": "elasticsearch" }
      },
      "script_score": {
        "script": {
          "source": "doc['title_length'].value * _score"
        }
      }
    }
  }
}

或者,如果您在此字段上有關鍵字映射,則可以使用使用字段大小的腳本分數查詢。 如果沒有,您將必須啟用其上的字段數據。 但它非常昂貴,不推薦。

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html

GET /_search
{
  "query": {
    "script_score": {
      "query": {
        "match": { "title": "elasticsearch" }
      },
      "script": {
        "source": "doc['title'].value.length() * _score"
      }
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM