簡體   English   中英

基於字符串在數字上的接近程度的彈性搜索評分文檔

[英]Elastic search score documents based on how close numerically a string is

假設我們在彈性索引中有以下格式的文檔:

{
  "street": "Adenauer Allee",
  "number": "119",
  "zipcode": "53113"
}

我們有一個查詢,如:

{
    "from": 0,
    "size": 1,
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "zipcode": {
                            "query": "53113",
                            "fuzziness": "0"
                        }
                    }
                },
                {
                    "match": {
                        "street": {
                            "query": "Adenauer Allee",
                            "fuzziness": "auto"
                        }
                    }
                }
            ],
            "should": [
                {
                    "match": {
                        "number": {
                            "query": "119"
                        }
                    }
                } 
            ]
        }
    }
}

現在假設我們的索引包含 3 個文檔

street: "Adenauer Allee"
zipcode: "53113"

他們有不同的門牌號碼,例如:

doc1: number: "11"
doc2: number: "120"
doc3: number: "10a"

(注意 doc3 中的“a”)。

上面的查詢將返回帶有數字“11”的結果doc1 (因為它在字母數字上更接近)。

期望的行為是首先返回具有最接近數值的文檔。 在上面的場景中,這是編號為“120”的doc2

我怎樣才能做到這一點?

彈性搜索信息:

{
"name": "193a315bccae",
"cluster_name": "demo",
"cluster_uuid": "kg3tZZOyqOgqTbn_elqs_g",
"version": {
"number": "7.5.1",
"build_flavor": "default",
"build_type": "docker",
"build_hash": "3ae9ac9a93c95bd0cdc054951cf95d88e1e18d96",
"build_date": "2019-12-16T22:57:37.835892Z",
"build_snapshot": false,
"lucene_version": "8.3.0",
"minimum_wire_compatibility_version": "6.8.0",
"minimum_index_compatibility_version": "6.0.0-beta1"
},
"tagline": "You Know, for Search"
}

script_score允許您實現自定義評分邏輯(請參閱 Elasticsearch 參考: Script Score Query )。 除了實現自己的腳本之外,您還可以對數字字段使用預定義的衰減函數之一,假設您從字符中“清理”了街道號碼(您可以將number轉換為多字段並存儲數字部分)它分別,例如number.numeric

在以前版本的 Elasticsearch 中,您可以使用function_score -query 來實現相同的邏輯(請參閱 Elasticsearch 參考: 函數分數查詢)。

暫無
暫無

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

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