gpt4 book ai didi

filter - 如何同时索引字符串及其反向?

转载 作者:行者123 更新时间:2023-12-03 00:26:15 24 4
gpt4 key购买 nike

我正在寻找一种将字符串“abc123”分析为[“abc123”,“321cba”]的方法。我已经看过reverse token 过滤器,但这只会让我[“321cba”]。关于此过滤器的文档非常稀疏,仅说明

"A token filter of type reverse ... simply reverses each token."



(请参阅 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-reverse-tokenfilter.html)。

我还尝试使用 keyword_repeat过滤器,这使我获得了两个实例。我不知道这是否有用,但就目前而言,它会反转两个实例。

如何使用 reverse token 过滤器,同时保留原始 token ?

我的分析仪:
{ "settings" : { "analysis" : {
"analyzer" : {
"phone" : {
"type" : "custom"
,"char_filter" : ["strip_non_numeric"]
,"tokenizer" : "keyword"
,"filter" : ["standard", "keyword_repeat", "reverse"]
}
}
,"char_filter" : {
"strip_non_numeric" : {
"type" : "pattern_replace"
,"pattern" : "[^0-9]"
,"replacement" : ""
}
}
}}}

最佳答案

制作并放入分析器以反转字符串(例如reverse_analyzer)。

PUT index_name
{
"settings": {
"analysis": {
"analyzer": {
"reverse_analyzer": {
"type": "custom",
"char_filter": [
"strip_non_numeric"
],
"tokenizer": "keyword",
"filter": [
"standard",
"keyword_repeat",
"reverse"
]
}
},
"char_filter": {
"strip_non_numeric": {
"type": "pattern_replace",
"pattern": "[^0-9]",
"replacement": ""
}
}
}
}
}

然后,对于字段(例如phoneno),将映射用作(创建类型并为电话附加映射为)
PUT index_name/type_name/_mapping
{
"type_name": {
"properties": {
"phone_no": {
"type": "string",
"fields": {
"reverse": {
"type": "string",
"analyzer": "reverse_analyzer"
}
}
}
}
}
}

因此,phone_no就像多字段,它将存储一个字符串及其相反的内容,
如果你索引
phone_no: 911220
然后在elasticsearch中,将存在如下字段: phone_no: 911220 and phone_no.reverse : 022119,因此您可以搜索,过滤反向或不反向字段。

希望这可以帮助。

关于filter - 如何同时索引字符串及其反向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25089694/

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