elasticsearch:是否可以使用模式标记器发出重叠标记?

时间:2015-01-27 14:54:50

标签: elasticsearch

使用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

有没有办法用内置标记器/过滤器/分析器的另一种组合来做到这一点?

1 个答案:

答案 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
      }
   ]
}

试一试,让我们知道:)