我们有两个弹性搜索实例,一个运行1.2.1和一个1.4,设置和映射在两个实例上运行的索引上是相同的,但结果是不同的。
默认分析器的设置:
....
analysis: {
filter: {
ourEnglishStopWords: {
type: "stop",
stopwords: "_english_"
},
ourEnglishFilter: {
type: "stemmer",
name: "english"
}
},
analyzer: {
default: {
filter: [
"asciifolding",
"lowercase",
"ourEnglishStopWords",
"ourEnglishFilter"
],
tokenizer: "standard"
}
}
},
...
在索引/搜索所有格形式时会出现弹性搜索版本之间的差异, 而在1.2.1“玩家”中,“玩家”和“玩家”将在1.4中返回相同的结果 前两个(“玩家”和“玩家”)具有相同的结果集,而“玩家”与该集合不匹配 这是一个已知的差异吗?在1.4及以上版本中获得相同行为的正确方法是什么?
答案 0 :(得分:2)
我认为this是1.3.0中引入的变化:
StemmerTokenFilter有很多问题:
- 英语退回了慢雪球英语词干
- porter2返回了雪球Porter stemmer(v1)
醇>的变化:
- english现在返回快速的PorterStemmer(用于创建的索引) v1.3.0起)
- porter2现在返回雪球英语词干(对于从v1.3.0开始创建的索引)
醇>
根据该github问题,您可以将映射更改为:
"ourEnglishFilter": {
"type": "stemmer",
"name": "porter2"
}
或尝试其他方式:
"filter": {
"ourEnglishStopWords": {
"type": "stop",
"stopwords": "_english_"
},
"ourEnglishFilter": {
"type": "stemmer",
"name": "english"
},
"possesiveEnglish": {
"type": "stemmer",
"name": "possessive_english"
}
},
"analyzer": {
"default": {
"filter": [
"asciifolding",
"lowercase",
"ourEnglishStopWords",
"possesiveEnglish",
"ourEnglishFilter"
],
"tokenizer": "standard"
}
}