gpt4 book ai didi

elasticsearch - 在Elasticsearch中标记字符串吗?

转载 作者:行者123 更新时间:2023-12-02 22:16:52 26 4
gpt4 key购买 nike

在Elasticsearch中标记所有单词,使得如果字符串是 flurry的(以撇号结尾),那么我想将其标记为 flurry's,flurry和flurrys 。但是如果我有包括撇号在内的任何特殊字符(不以s结尾,如上所示),那么我想使用我的单词定界符,例如请参见下文

S'sode = S, sode, Ssode, S'sode OR S-sode = S, sode, Ssode, S-sode



我的单词定界符工作正常,但仅在字符串以撇号和s结尾的情况下才有效。我的字定界符如下
"my_word_delimiter" : {
"type" : "word_delimiter",
"preserve_original": true,
"catenate_all": true,
"split_on_case_change": true,
"stem_english_possessive": false
}

我以前使用过单词定界符过滤器,但是它也在考虑 s ,并且我不希望在我的标记化字符串中使用单个 s ,我也使用了逗号分隔符,但没有得到

谁能告诉我我该怎么做?我对Elasticsearch不太了解。

到现在为止,在Ketty的答案的帮助下,并将其与我的单词定界符混合在一起,我只停留在一点,告诉我如何告诉单词定界符不要标记化以结尾的字符串,我的代码如下
"settings": {
"analysis": {
"char_filter": {
"test": {
"type": "pattern_replace",
"pattern": "\\b((\\w+)'s)\\b",
"replacement": "$1 $2 $2s"
}
},
"analyzer": {
"apostrophe_analyzer": {
"tokenizer": "whitespace",
"char_filter" : ["test"],
"filter" : [ "my_word_delimiter", "lowercase"]
}
},
"filter":{
"my_word_delimiter" : {
"type" : "word_delimiter",
"preserve_original": true,
"catenate_all": true,
"split_on_case_change": true,
"stem_english_possessive": false
}
}
}

},

最佳答案

我建议使用以下分析器:

"analysis": {
"char_filter": {
"test": {
"type": "pattern_replace",
"pattern": "\\b((\\w+)'s)\\b",
"replacement": "$1 $2 $2s"
}
},
"filter": {
"my_word_delimiter": {
"type": "word_delimiter",
"preserve_original": true,
"catenate_all": true,
"split_on_case_change": true,
"stem_english_possessive": true
}
},
"analyzer": {
"my_analyzer": {
"filter": [
"my_word_delimiter"
],
"char_filter" : ["test"],
"type": "custom",
"tokenizer": "whitespace"
}
}
}

关于elasticsearch - 在Elasticsearch中标记字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38981165/

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