gpt4 book ai didi

java - Elasticsearch 中自定义分词器的正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:49:34 25 4
gpt4 key购买 nike

我正在尝试为 elasticsearch 创建一个自定义标记器来解析推文:

假设我有这段文字:

"This is a test!! @test_twitter #testForLife"

我想生成以下 token :

["This", "is", "a", "test!!", "@test_twitter", "#testForLife"]

为此,我提出了以下我在 regex101 上测试的正则表达式:

(\w*\S*[\S*])

看起来效果不错。

问题是我的分析器需要一个 Java 正则表达式,所以我使用 regex101 转换它并得到以下结果:

(\\w*\\S*[\\S*])

我在下面的网站测试了http://www.regexplanet.com/advanced/java/index.html但它似乎没有捕捉到任何东西,我在 elasticsearch 上试了一下:

PUT my_index
{ "settings" : {
"index" : {
"number_of_shards" : 1,
"number_of_replicas" : 0
},
"analysis": {
"analyzer": {
"tweeter_analyser_nlp" :{
"type" : "custom",
"tokenizer" : "tweeter_tokenizer",
"filter": ["lowercase"]
}
},
"tokenizer": {
"tweeter_tokenizer": {
"type": "pattern",
"pattern": "(\\w*\\S*[\\S*])"
}
}
}
},
"mappings": {
"tweet": {
"properties": {
"text": {
"type": "text",
"term_vector": "yes",
"analyzer" : "tweeter_analyser_nlp"
},
"fullname": {
"type": "text",
"term_vector": "with_positions_offsets_payloads",
"analyzer" : "tweeter_analyser_nlp"
}
}
}
}
}

而且它也没有捕捉到任何东西:

GET my_index/_analyze
{
"analyzer": "tweeter_analyser_nlp",
"text": "A test"
}

它返回我:

{
"tokens": [
{
"token": " ",
"start_offset": 1,
"end_offset": 2,
"type": "word",
"position": 0
}
]
}

我的 Java 正则表达式是错误的吗?如果是的话,什么是好的 Java 正则表达式?

还是问题来自其他地方?

最佳答案

使用空白分词器类型:

"tokenizer": {
"tweeter_tokenizer": {
"type": "whitespace"
}
}

关于java - Elasticsearch 中自定义分词器的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45955119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com