[英]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.