使用elasticsearch,我想设置一个分析器,在给定输入字符串的情况下发出重叠的标记,有点像边缘Ngrams tokenizer。 鉴于输入
a/b/c
我希望分析仪生成令牌
a a/b a/b/c
我使用以下设置尝试了模式标记器:
settings: {
analysis: {
tokenizer: {
"my_tokenizer": {
"type": "pattern",
"pattern": "^(.*)(/|$)",
"group": 1
}
...
然而,它不会输出所有匹配序列,因为它是贪婪的,只会输出
a/b/c
有没有办法用内置标记器/过滤器/分析器的另一种组合来做到这一点?
答案 0 :(得分:2)
根据您的值格式,您可以使用path hierarchy标记器。
尝试使用analyze API:
GET _analyze?tokenizer=path_hierarchy&text=a/b/c
输出非常接近你想要的:
{
"tokens": [
{
"token": "a",
"start_offset": 0,
"end_offset": 1,
"type": "word",
"position": 1
},
{
"token": "a/b",
"start_offset": 0,
"end_offset": 3,
"type": "word",
"position": 1
},
{
"token": "a/b/c",
"start_offset": 0,
"end_offset": 5,
"type": "word",
"position": 1
}
]
}
试一试,让我们知道:)