ElasticSearch的Span Near

Han
阿Han的圖文解字筆記
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的搜尋原理。

--

--