我使用彈性搜索大約一個月,我發現一件事一個查詢fuzzie,我不明白。彈性搜索模糊查詢奇怪的結果
該場景是我有一組用戶的類型和索引近10.000項目,我想搜索用戶名,並返回與模糊模式下搜索字符串匹配的所有項目,例如我的用戶是「masterviana」,如果我只用文本「mastervi」進行搜索,那麼我希望能夠使用模糊查詢來查看結果頂部的masterviana?
"fuzzy" : {
"public_name" : {
"value" : "mastervi",
"boost" : 1.0,
"fuzziness" : 2,
"prefix_length" : 0,
"max_expansions": 100
}
}
但是我不是在第一頁看到我的用戶名(masterviana),也是我看到那些「不太類似」像我的查詢字符串的用戶名,我會告訴只有前5個安打不擴展到多後
{
"_index": "username",
"_type": "username",
"_id": "2061|FZ4y1t042482S3EqobiVllmv00",
"_score": 9.198499,
"_source": {
"public_name": "masterv",
"bbid": "FZ4y1t042482S3EqobiVllmv00",
"hash": 2061,
"avata": "http://goo.gl/4CRt3v"
}
},
{
"_index": "username",
"_type": "username",
"_id": "2048|r0I5XZ31076phruMS1gu9Hjv00",
"_score": 5.9688096,
"_source": {
"public_name": "project--master",
"bbid": "r0I5XZ31076phruMS1gu9Hjv00",
"hash": 2048,
"avata": "http://goo.gl/4CRt3vr"
}
},
{
"_index": "username",
"_type": "username",
"_id": "1980|W5Wal166832UV5oCqUH9Vjcv00",
"_score": 5.7984095,
"_source": {
"public_name": "masterjv",
"bbid": "W5Wal166832UV5oCqUH9Vjcv00",
"hash": 1980,
"avata": "http://goo.gl/4CRt3v"
}
},
{
"_index": "username",
"_type": "username",
"_id": "2108|Kufhm899338GPWHsuoei1HOv00",
"_score": 5.7984095,
"_source": {
"public_name": "master25",
"bbid": "Kufhm899338GPWHsuoei1HOv00",
"hash": 2108,
"avata": "http://goo.gl/4CRt3v"
}
},
{
"_index": "username",
"_type": "username",
"_id": "1952|AtPw2a97575sC5JT406msOXv00",
"_score": 5.7984095,
"_source": {
"public_name": "masterpiz",
"bbid": "AtPw2a97575sC5JT406msOXv00",
"hash": 1952,
"avata": "http://goo.gl/4CRt3v"
}
},
,你可以看到我越來越善於頂部1. masterv 2.項目主我,我認爲我的查詢「mastervi」更接近「masterviana」,使得例如「masterv」或「項目主」
還有一件事,如果我搜索完全相同的文本「masterviana」我是隻有這個項目
感謝您的回覆,如果我使用fuzzyLikeThis我也沒有看到我的用戶名。我正在使用像這樣「fuzzy_like_this」:{ 「fields」:[「public_name」], 「like_text」:「mastervi」 } 但同樣的事情發生了,是否有這樣做的方法,而這個問題解決了嗎? – mastervv
_explain API可以幫助揭示單個匹配背後的詳細評分邏輯。 FuzzyLikeThis應該已經消除了方程中的稀缺性,但mastervi在技術上比masterviana更接近mastervi,因爲它只是Levenstein編輯距離度量方面的一個字符變化 – MarkH