簡體   English   中英

在彈性搜索中實現優先級搜索

[英]Implementing priority search in elastic search

我正在嘗試在彈性搜索中實現自定義搜索。

問題陳述是考慮將3個文檔插入到具有“名稱”字段作為數組的彈性搜索中:

{
   id:1,
   names:["John Wick","Iron man"]
}
{
   id:2,
   names:["Wick Stone","Nick John"]
}
{
   id:3,
   names:["Manny Nick","Stone cold"]
}

當我搜索“ Nick”時,我想提升或優先使用以Nick開頭的文檔,因此在這種情況下,應先輸入ID 2的文檔,然后再輸入ID 3的文檔,如果我搜索全名“ Manny Nick”的文檔, ID 3應該優先。

在這種情況下,您可能需要針對所需條件修改/提高搜索匹配結果的分數 例如,匹配名的文件"Nick" ,並在同一時間修改和增加的文檔的分數包含names與啟動Nick使匹配文件Nick也開始與Nick將有更高的分數

實現此目的的一種方法是使用功能得分查詢。 在下面的查詢中,使用匹配詞組前綴查詢 (附加權重為20)搜索關鍵字“ Nick”,並對匹配文檔的分數進行修改並提高標准“以Nick開頭的名稱”

{
  "query": {
    "function_score": {
      "query": {
        "match": {
          "names": "Nick"
        }
      },
      "boost": "1",
      "functions": [
        {
          "filter": {
            "match_phrase_prefix": {
              "names": "Nick"
            }
          },
          "weight": 20
        }
      ],
      "boost_mode": "sum"
    }
  }
}

測試:

插入的數據:

{
   id:1,
   names:["John Wick","Iron man"]
}
{
   id:2,
   names:["Wick Stone","Nick John"]
}
{
   id:3,
   names:["Manny Nick","Stone cold"]
}

輸出:

{
    "took": 10,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 2,
        "max_score": 20.693148,
        "hits": [
            {
                "_index": "stack_1",
                "_type": "1",
                "_id": "T9kn5WsBrk7qsVCmKBGH",
                "_score": 20.693148,
                "_source": {
                    "id": 2,
                    "names": [
                        "Wick Stone",
                        "Nick John"
                    ]
                }
            },
            {
                "_index": "stack_1",
                "_type": "1",
                "_id": "Ttkm5WsBrk7qsVCm2RF_",
                "_score": 20.287682,
                "_source": {
                    "id": 3,
                    "names": [
                        "Manny Nick",
                        "Stone cold"
                    ]
                }
            }
        ]
    }
}

暫無
暫無

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

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