在我將同義詞分析器添加到 my_index 后,索引變得區分大小寫
我有一個名為nationalityhas的屬性synonym analyzer。但似乎這個屬性case sensitive是因為同義詞分析器。
這是我的/my_index/_mappings
{
"my_index": {
"mappings": {
"items": {
"properties": {
.
.
.
"nationality": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
},
"analyzer": "synonym"
},
.
.
.
}
}
}
}
}
在索引內,我有 word India COUNTRY。當我嘗試India nation使用下面的命令進行搜索時,我會得到結果。
POST /my_index/_search
{
"query": {
"match": {
"nationality": "India nation"
}
}
}
但是,當我搜索india(注意字母i是小寫的)時,我什么也得不到。我的假設是,發生這種情況是因為我uppercase在synonym. 我這樣做是因為同義詞是大寫的。所以查詢India將INDIA在通過這個過濾器之后。
這是我的/my_index/_settings
{
"my_index": {
"settings": {
"index": {
"number_of_shards": "1",
"provided_name": "my_index",
"similarity": {
"default": {
"type": "BM25",
"b": "0.9",
"k1": "1.8"
}
},
"creation_date": "1647924292297",
"analysis": {
"filter": {
"synonym": {
"type": "synonym",
"lenient": "true",
"synonyms": [
"NATION, COUNTRY, FLAG"
]
}
},
"analyzer": {
"synonym": {
"filter": [
"uppercase",
"synonym"
],
"tokenizer": "whitespace"
}
}
},
"number_of_replicas": "1",
"version": {
"created": "6080099"
}
}
}
}
}
有沒有辦法讓這個屬性仍然不區分大小寫。我發現的所有解決方案只表明我應該只將里面的所有文本設定nationality為小寫或大寫。但是,如果我在索引中有大寫和小寫字母怎么辦?
uj5u.com熱心網友回復:
將資料添加到索引后,您是否應用了同義詞過濾器?
如果是這樣,可能“India COUNTRY”短語被索引為“India COUNTRY”。當您將匹配查詢發送到索引時,您的查詢被分析并作為“印度國家”發送,因為您不再有大寫過濾器,它是匹配的,因為您正在使用匹配查詢,匹配其中一個單詞就足夠了。“國家”一詞提供了這一點。
但是,當您發送一個單詞查詢“印度”時,由于您的大寫過濾器,它會被分析并轉換為“印度”,但您的索引中沒有任何匹配的單詞。您只有一個包含“India COUNTRY”的檔案。
我的回答有一點假設。我希望對理解您的問題有所幫助。
uj5u.com熱心網友回復:
我找到了解決方案!
我沒有意識到我在settings更新和搜索資料時應用的過濾器是適用的。起初,我做了這一步:
- 使用同義詞過濾器創建索引
- 插入資料
uppercase在同義詞過濾器之前添加
通過這樣做,uppercase過濾器不會應用于我的資料。我應該做的是:
uppercase用&過濾器創建索引synonym(注意順序)- 插入資料然后過濾器將應用于我的資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/448773.html
標籤:弹性搜索
上一篇:通過elasticsearch上的另一個欄位從搜索結果中排除一個欄位?
下一篇:拒絕訪問您無權訪問監控
