2016-11-28 145 views
2

我的文檔有一個'description'字段,其中包含3到10個句子。ElasticSearch:使用match_phrase支持模糊的替代方案

我不得不支持模糊性,因爲我不能指望用戶完全相同的單詞。

在另一方面,我必須使用「match_phrase」,而不是「匹配」,因爲如果的話彼此太遠,該文件是不相關的。

問題是,「match_phrase」不分析單詞,因此它不支持模糊性。 (請參閱最後一段https://www.elastic.co/guide/en/elasticsearch/guide/master/phrase-matching.html)。

我想我需要一個創造性的解決方案在這裏以某種方式實現這兩個要求。也許通過使用其他搜索查詢。

回答

0

經過對'span'查詢的一些挖掘後,事實證明可以通過'span_near'和'span_multi'來實現上述兩個請求。

以下是在「說明」字段中搜索「hello world」的示例。

{ 
    "span_near": { 
     "clauses": [{ 
      "span_multi": { 
       "match": { 
        "fuzzy": { 
         "description": { 
          "value": "hello" 
         } 
        } 
       } 
      } 
     }, { 
      "span_multi": { 
       "match": { 
        "fuzzy": { 
         "description": { 
          "value": "world" 
         } 
        } 
       } 
      } 
     }], 
     "slop": 2, 
     "in_order": false, 
     "collect_payloads": false 
    } 
}, 
+0

不錯!你是否設法使查詢中的某些詞成爲可選項? 即查詢中的一個/兩個單詞丟失,但仍被視爲匹配。我試圖玩'slop',但我仍然不確定它是如何影響結果的。 – OoDeLally