簡體   English   中英

無法配置彈性搜索

[英]Can't configure elasticsearch

我在搜索中輸入單詞“Booking”,並且已經從第 5 個結果開始返回“Cooking”,但是仍然有帶有單詞“Booking”的結果,它們包含在行中。

$this->aQuery['query']['bool']['must'][]['multi_match'] = [
   'type' => 'cross_fields',
   'query' => 'Booking',
   'fields' => ['prod_name', 'prod_prefix'],
   'operator' => 'or'
];

我需要只包含“預訂”一詞的結果。 但如果您輸入“Travel Booking”,則結果可能同時包含“Travel”和“Booking”。

要獲得完全匹配,請使用術語查詢

Match 使用所謂的分析器來轉換您的搜索並找到所有匹配的單詞。 條款檢查搜索字符串的完全匹配,因此搜索 Booking 不應返回包含“Travel Booking”的文檔。

如頁面所述:

默認情況下,Elasticsearch 在分析期間會更改文本字段的值。 例如,默認標准分析器更改文本字段值如下:

  • 刪除大部分標點符號
  • 將剩余的內容分成單獨的單詞,稱為標記
  • 小寫標記

詞條查詢不分析搜索詞條。 術語查詢僅搜索您提供的確切術語。 這意味着在搜索文本字段時,術語查詢可能會返回較差的結果或沒有結果。

另請注意,您需要在索引映射中包含關鍵字類型

"prod_name": {
    "type":  "text",
    "fields": {
      "raw": { 
        "type":  "keyword"
      }
    }
  }

那么當你搜索你的單詞時,你需要使用Keyword字段名:

"term": {
  "prod_name.raw": {
    "value": "Booking",
    "boost": 1.0
  }
}

暫無
暫無

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

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