簡體   English   中英

如何根據相關性對Elastic Search查詢結果進行排序?

[英]How can I sort Elastic Search query results based on relevancy?

我正在嘗試在elastic search服務器中進行elastic search

以下是我的情況:

給搜索API一個術語"Hello World" ,返回所有文檔:

  1. 確切模式“Hello World”
  2. “你好”和“世界”
  3. “你好”或“世界”

我想在一個查詢中執行上述操作。 我知道,所有這些都可以使用match_phrase和default_operator進行OR / AND。 但我希望所有這三個都在一個查詢中完成。

我希望根據相關性對結果進行排序。 因此,如果文檔包含確切的短語,則它是最相關的。如果文檔中包含單詞(AND),則其中的某些位置具有中等相關性。 如果文檔包含至少一個單詞(OR),則它最不相關。

到目前為止,彈性搜索是否可行?

這是您可能需要的:

請求參數

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

{
  "query": 
   {
    "query_string" : 
       {
        "query" : "Hello World"
       }
   }
}

這將獲取所有組合:

  • 你好,世界,你好世界,世界你好。

您想要檢查Bool查詢以及可能的Boosting Query子句

舉個例子,你可以做到

{
    "query": {
        "bool": {
            "should": [
                {
                    "match": {
                        "FIELDNAME": {
                            "query": "Hello",
                            "boost": 1
                        }
                    }
                },
                {
                    "match": {
                        "FIELDNAME": {
                            "query": "World",
                            "boost": 1
                        }
                    }
                },
                {
                    "match_phrase": {
                        "FIELDNAME": {
                            "query": "Hello World",
                            "boost": 2
                        }
                    }
                }
            ],
            "minimum_should_match" : 1
        }
    }
}

這要求您的三個條件之間至少有1個為真( minimum_should_match )。 滿足的條件越多,文檔的得分就越高(因此它將首先返回),就像您希望的那樣。 你可以boost條件的重要性,在這里我將整個短語匹配的重要性加倍,但這只是一個例子。

暫無
暫無

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

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