如何在 elasticsearch 的设置中声明多个分词器
How to declare more than one tokenizer in settings for elasticsearch
我想创建一个 属性 的搜索索引,我希望其结果按以下顺序排列:
- 首先是所有以搜索词
开头的结果
- 然后所有包含搜索词的结果
所以为此,我想使用 https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-edgengram-tokenizer.html
但我的索引设置中已经有分词器 kuromoji_tokenizer
。
那么我如何在设置中添加另一个分词器(然后在分析器中使用它),以便我可以完成上面的场景?
因此,例如在下面的 json 中,我可以向 tokenzier 添加另一个子项还是 tokenzier 需要是一个数组?
"settings": {
"analysis": {
"analyzer": {
"autocomplete": {
"tokenizer": "autocomplete",
"filter": [
"lowercase"
]
},
"autocomplete_search": {
"tokenizer": "lowercase"
}
},
"tokenizer": {
"autocomplete": {
"type": "edge_ngram",
"min_gram": 2,
"max_gram": 10,
"token_chars": [
"letter"
]
}
}
}
}
我相信你可以,是的。只需将它添加到第一个旁边,不要创建数组,只需给它另一个名称(在我的示例中我称之为 "my_other_tokenizer"):
"settings": {
"analysis": {
"analyzer": {
"autocomplete": {
"tokenizer": "autocomplete",
"filter": [
"lowercase"
]
},
"autocomplete_search": {
"tokenizer": "lowercase"
}
},
"tokenizer": {
"autocomplete": {
"type": "edge_ngram",
"min_gram": 2,
"max_gram": 10,
"token_chars": [
"letter"
]
},
"my_other_tokenizer": {
"type": "kuromoji_tokenizer",
"mode": "extended",
"discard_punctuation": "false",
"user_dictionary": "userdict_ja.txt"
}
}
}
}
然后在您的分析器设置中使用它,就像您对第一个分词器所做的那样。
我想创建一个 属性 的搜索索引,我希望其结果按以下顺序排列:
- 首先是所有以搜索词 开头的结果
- 然后所有包含搜索词的结果
所以为此,我想使用 https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-edgengram-tokenizer.html
但我的索引设置中已经有分词器 kuromoji_tokenizer
。
那么我如何在设置中添加另一个分词器(然后在分析器中使用它),以便我可以完成上面的场景?
因此,例如在下面的 json 中,我可以向 tokenzier 添加另一个子项还是 tokenzier 需要是一个数组?
"settings": {
"analysis": {
"analyzer": {
"autocomplete": {
"tokenizer": "autocomplete",
"filter": [
"lowercase"
]
},
"autocomplete_search": {
"tokenizer": "lowercase"
}
},
"tokenizer": {
"autocomplete": {
"type": "edge_ngram",
"min_gram": 2,
"max_gram": 10,
"token_chars": [
"letter"
]
}
}
}
}
我相信你可以,是的。只需将它添加到第一个旁边,不要创建数组,只需给它另一个名称(在我的示例中我称之为 "my_other_tokenizer"):
"settings": {
"analysis": {
"analyzer": {
"autocomplete": {
"tokenizer": "autocomplete",
"filter": [
"lowercase"
]
},
"autocomplete_search": {
"tokenizer": "lowercase"
}
},
"tokenizer": {
"autocomplete": {
"type": "edge_ngram",
"min_gram": 2,
"max_gram": 10,
"token_chars": [
"letter"
]
},
"my_other_tokenizer": {
"type": "kuromoji_tokenizer",
"mode": "extended",
"discard_punctuation": "false",
"user_dictionary": "userdict_ja.txt"
}
}
}
}
然后在您的分析器设置中使用它,就像您对第一个分词器所做的那样。