我们有两个 flex 搜索实例,一个实例运行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"
}
}
},
...
索引/搜索所有格形式时,会出现 flex 搜索版本之间的差异,
而在1.2.1中,“玩家”,“玩家”和“玩家的”将在1.4中返回相同的结果
前两个(“玩家”和“玩家”)具有相同的结果集,而“玩家的”与结果集不匹配
这是已知的区别吗?在1.4及更高版本中获得相同行为的正确方法是什么?
最佳答案
我认为this是在1.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"
}
}