edge_ngrams我的用例是在支持下搜索synonym要匹配的令牌应按顺序排列的位置。
在尝试分析时,我观察到过滤器链在位置增量方面有两种不同的行为。
lowercase, synonym没有位置增量SynonymFilterlowercase, edge_ngram, synonym存在位置增量SynonymFilter以下是我针对每种情况运行的查询:
情况1.无位置增量
PUT synonym_test
{
"index": {
"analysis": {
"analyzer": {
"by_smart": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"custom_synonym"
]
}
},
"filter": {
"custom_synonym": {
"type": "synonym",
"synonyms": [
"begin => start"
]
}
}
}
}
}
GET synonym_test/_analyze
{
"text": "begin working",
"analyzer": "by_smart"
}
Run Code Online (Sandbox Code Playgroud)
输出:
{
"tokens": [
{
"token": "start",
"start_offset": 0,
"end_offset": 5,
"type": "SYNONYM",
"position": …Run Code Online (Sandbox Code Playgroud)