【发布时间】:2015-11-18 05:18:28
【问题描述】:
大家好,我在 ES 中面临两个问题
- 我在 ES 中有一个“城市”“纽约”,现在我想编写一个术语过滤器,这样如果给定的字符串与“纽约”完全匹配,那么只有它返回,但发生的情况是当我的过滤器匹配“新" 或 "York" 两者都返回 "New York" 但它没有返回任何 "New York" 我的映射在下面给出请告诉我应该在映射中使用哪个分析器或标记器
这里是设置和映射:
"settings": {
"index": {
"analysis": {
"analyzer": {
"synonym": {
"tokenizer": "whitespace",
"filter": ["synonym"]
}
},
"filter": {
"synonym": {
"type": "synonym",
"synonyms_path": "synonyms.txt"
}
}
}
}
},
mappings : {
"restaurant" : {
properties:{
address : {
properties:{
city : {"type" : "string", "analyzer": "synonym"},
}
}
}
}
-
第二个问题是,当我尝试对小写示例“new*”使用通配符查询时,ES 没有返回任何内容,但是当我尝试搜索大写示例“New*”时,它现在返回“New York”现在我在第二种情况下,我想编写我的城市映射,这样当我为两个 ES 搜索小写或大写时,我会返回相同的东西,我已经看到忽略大小写,并且我在同义词中将其设置为 false,但我仍然无法搜索小写和大写。
"synonym": { "type": "synonym", "synonyms_path": "synonyms.txt", "ignore_case": true // See here }
【问题讨论】:
-
你的同义词文件怎么样?是像
ny, nyc , new york city => new york还是ny, nyc ,new york city, new york因为你指定同义词的方式会产生影响 -
同义词文件中没有纽约
-
@amanverma 提供与
New York搜索相关的synonyms.txt文件的内容。 -
no synonyms file 与 ne york 无关 我有不同的地方,我会告诉你它包含什么 mumbai、bombay calcutta、kolkata puducherry、pondicherry Bangalore、Bengaluru
标签: elasticsearch filter