ElasticSearch的Span Near
Published in
Nov 1, 2020
範例句:
假設我們有一段文章以空白隔開的方式來切割詞彙,內容如下:
為了 提升 滿意度 我們 需要 您 填寫 問卷
假設條件為:
- clauses:[提升,滿意度,問卷] 。
- slop:4。
- in_order: true
❗ 這裡的Slop代表範圍內不匹配的最大數量,從開始匹配的字詞框到最後加總一併進行計算。
查詢結構會是如此
{
"span_near": {
"clauses": [
{
"span_term": {
"dialogs": "提升"
}
},
{
"span_term": {
"dialogs": "滿意度"
}
},
{
"span_term": {
"dialogs": "問卷"
}
}
],
"slop": 4,
"in_order": true
}
}
請問上述條件是否能正確搜尋出文本?
答案: 可以, 因為「提升→ 滿意度 → 問卷」之間跨詞數量為4, 而我們條件是限定跨詞距離為4,符合搜尋條件, 因此可以被正確搜尋。
如果想要正確被搜尋出來只能增加跨詞距離來囊括匹配的範圍,但這個距離要怎麼抓呢? 勢必得根據需求以及觀察資料後才能決定這個部份的應用方式了,以上只是說明了Span Near Query的搜尋原理。