更改 Elasticsearch Path Hierarchy Tokenizer 分隔符

Change Elasticsearch Path Hierarchy Tokenizer delimiter

我在使用 Path Hierarchy Tokenizer 时遇到了一些问题。 我需要的是使用反斜杠作为分隔符的路径层次分词器。

我想做的是索引和搜索 Windows 路径。

 "index": {
  "analysis": {
     "tokenizer": {
        "path": {
           "type": "path_hierarchy",
           "delimeter": "\"
        }
     },
     "analyzer": {
        "analyzer_path": {
           "type": "custom",
           "tokenizer": "path",
           "filter": "lowercase"
        }
     }
  }

当我尝试获取自定义字符串的标记化元素时,我得到了一个标记

GET /test/_analyze?analyzer=analyzer_path&text=C:\Users\Admin\AppData\Local\Temp\hello.exe


"tokens": [
  {
     "token": "c:\users\admin\appdata\local\temp\hello.exe",
     "start_offset": 0,
     "end_offset": 43,
     "type": "word",
     "position": 1
  }
]

使用正斜杠给出正确的结果

GET /test/_analyze?analyzer=analyzer_path&text=C:/Users/Admin/AppData/Local/Temp/hello.exe

我得到了所有的代币。

似乎完全忽略了分隔符设置。

你打错了,delimeter 应该读作 delimiter。这可能是问题所在。

它与正斜杠一起工作的原因是因为在指定 none 的情况下正斜杠是默认分隔符,并且由于 delimeter 拼写错误,因此使用默认分隔符。

他们可能应该做的是因为参数未知而发出错误,但他们 just silently ignore it. You could probably file an issue.