我正在使用Elasticsearch存储文本,并且正在寻找针对文本字段的自定义分析器。我有很多要求,其中之一就是连字必须组合成一个标记。
例如:字符串“承诺是长期的”应标记为:[长期的承诺]
编辑:
得到很少的赞成票,也许我需要具体说明我所尝试的。我尝试使用Pattern Tokenizer指定所有有效令牌。似乎很忙,因为我只有结合连字标记的要求。
我正在寻找类似Char Group Tokenizer的东西,但是具有类似'排除'功能的东西,其中所有符号except'-'将用于分割标记。没有找到更简单的方法来做到这一点。我看过here和here,但没有找到更好的方法。
尝试一下:
设置
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "my_tokenizer"
}
},
"tokenizer": {
"my_tokenizer": {
"type": "char_group",
"tokenize_on_chars": [
"whitespace"
]
}
}
}
}
}
分析查询
POST my_index/_analyze
{
"text": ["The commitment is long-term"],
"analyzer": "my_analyzer"
}
结果
{
"tokens" : [
{
"token" : "The",
"start_offset" : 0,
"end_offset" : 3,
"type" : "word",
"position" : 0
},
{
"token" : "commitment",
"start_offset" : 4,
"end_offset" : 14,
"type" : "word",
"position" : 1
},
{
"token" : "is",
"start_offset" : 15,
"end_offset" : 17,
"type" : "word",
"position" : 2
},
{
"token" : "long-term",
"start_offset" : 18,
"end_offset" : 27,
"type" : "word",
"position" : 3
}
]
}
希望这就是您想要的。