2
我試圖創建一個自定義tokeniser爲elasticsearch解析鳴叫自定義tokeniser表達令牌:定期對elasticsearch
["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正則表達式?
還是問題來自其他地方?
看來你只需要'「\\ S +」'相匹配的1個或多個非空白符號塊。 –
我希望你複製原來的RegEx,而不是「Java版本」,因爲這是** RegexPlanet **等待...... –
@UsagiMiyamoto好了,你解決了我關於** RegexPlanet **問題的問題,它與「Java版本」,但彈性搜索仍然不正確標記 – mel