用于提取文件名的 Pattern Tokenizer

Pattern Tokenizer for extracting file name

我想在 ElasticSearch 中将“a.b.c”标记化为 a, a.b, a.b.c, b.c, b, c 部分。我尝试了一些正则表达式,但更新分词器很乏味,而且我的正则表达式非常糟糕,所以我正在寻求帮助。

我已经尝试过这个公式,但他们没有给我想要的东西:

[(^\.)]+
[(.+\.)]+
[^\p{L}\d]+

试试这个,

PUT my_sample
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "my_tokenizer"
        }
      },
      "tokenizer": {
        "my_tokenizer": {
          "type": "path_hierarchy",
          "delimiter": ".",
          "replacement": "."
        }
      }
    }
  }
}

那么,

POST my_sample/_analyze
{
  "analyzer": "my_analyzer",
  "text": "a.b.c"
}

它将产生以下术语:

[ a.b.c., a.b., b.c., a., b., c. ]

然后你通过你的程序简单地处理它