Regex Elasticsearch令牌过滤器,用于删除带有单个单词的令牌
我有一个看起来很简单的问题,虽然我不能让它工作。 我有一个单词的标记流,我想删除任何单个单词的标记,例如Regex Elasticsearch令牌过滤器,用于删除带有单个单词的令牌,regex,
elasticsearch,Regex,
elasticsearch,我有一个看起来很简单的问题,虽然我不能让它工作。 我有一个单词的标记流,我想删除任何单个单词的标记,例如[快速、棕色、福克斯]应作为[快速]输出 我尝试过使用pattern\u capturetoken过滤器,并使用了许多类型的模式,但它只生成新的标记,不删除旧的标记 这是我构建的分析器(为了清晰起见缩写) 我知道我正在使用一个空白标记器将句子分解成单词,但这里没有显示使用木瓦来创建新的ngram dash\u drop过滤器用于将带有-的句子拆分为不带-的标记,例如:my house-my r
[快速、棕色、福克斯]
应作为[快速]
输出
我尝试过使用pattern\u capture
token过滤器,并使用了许多类型的模式,但它只生成新的标记,不删除旧的标记
这是我构建的分析器(为了清晰起见缩写)
我知道我正在使用一个空白
标记器将句子分解成单词,但这里没有显示使用木瓦
来创建新的ngram
dash\u drop
过滤器用于将带有-
的句子拆分为不带-
的标记,例如:my house-my rules
将拆分为[my house,my rules]
任何帮助都非常有用。要匹配没有空格的字符串,您可以使用
^[^]+$
(或者在Lucene regex中使用[^]+
)谢谢@WiktorStribiżew,但是我看到模式捕获
只添加了新的标记,不会删除不匹配的标记。我应该如何移除它们?水流是如何进入ES的?你能发布你的全部地图吗?@sramalingam24对不起,我不能。但是你能澄清你需要知道什么吗?如果你的意思是我使用logstash,那么不,我只需要它来分析单个句子
"analyzer": {
"job_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"char_filter": [
"some_custom_char_filter"
],
"filter": [
other filters....,
"dash_drop",
"trim",
"unique",
"drop_single_word"
]
}
},
"char_filter": {...},
"filter": {
"dash_drop": {
"type": "pattern_capture",
"preserve_original": false,
"patterns": [
"([^-]+)\\s?(?!-.+)",
"- (.+)"
]
},
"drop_single_word": {
"type": "pattern_capture",
"preserve_original": false,
"patterns": [**nothing here works**]
}
}
}