gpt4 book ai didi

elasticsearch - 当数据之间有空格或破折号时,哪个分析器可以获取附加词的结果?

转载 作者:行者123 更新时间:2023-12-02 23:31:42 25 4
gpt4 key购买 nike

我的映射如下所示。如您所见,名称字段已被分析

     {
"state":"open",
"settings":{
"index":{
"creation_date":"1453816191454",
"number_of_shards":"5",
"number_of_replicas":"1",
"version":{
"created":"1070199"
},
}
},
"mappings":{
"Product":{
"properties":{
"index":"not_analyzed",
"store":true,
"type":"string"
},
"Name":{
"store":true,
"type":"string"
},
"Number":{
"index":"not_analyzed",
"store":true,
"type":"string"
},
"id":{
"index":"no",
"store":true,
"type":"integer"
}
}
},
"aliases":[

]
}
}

当我如下查询
   "query": {
"match_phrase": {
"Name": "hl-2240"
}
}

这很好用,“hl 2240”也可以,但是当我键入“hl2240”时。我没有任何结果。我知道这是因为名称被索引为“hl-2240”,并且我猜我使用的是标准输入或通用分析器,它的符号化为hl和2240。虽然我没有任何符号hl2240的反向索引,但找不到任何东西。我了解到我应该使用另一个分析仪。但这就是我所坚持的。我可以使用哪个分析仪?我应该重新索引我的索引还是只能使用分析器查询?如果我更改分析仪以对数据建立索引,则要确保我不会丢失搜索“hl-2240”或“hl 2240”的结果。

更新:我试图为Richa的答案嵌套查询。
   Client.CreateIndex("myIndex",
ci => ci.Analysis(a => a.TokenFilters(f => f.Add("my_word_delimiter", new WordDelimiterTokenFilter
{
CatenateAll = true

}))
.Analyzers(an => an.Add("my_analyzer", new CustomAnalyzer
{
Tokenizer = "whitespace",
Filter = new List<string> {"standard",
"lowercase",
"my_word_delimiter"}
}))));

最佳答案

尝试使用此analyzer:

{
"settings": {
"analysis": {
"filter": {
"my_word_delimiter": {
"type": "word_delimiter",
"catenate_all": true <=== Notice this

}
},
"analyzer": {
"my_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"standard",
"lowercase",
"my_word_delimiter"
]
}
}

}
}
}

了解有关 catenate_all的信息。

使用以下命令查看如何对字符串进行标记:
 curl -XGET "localhost:9200/index_8/_analyze?analyzer=my_analyzer&pretty=true" -d 'hl-2240'

这将产生以下输出,并且 hl-2240将被索引为
{
"tokens" : [ {
"token" : "hl",
"start_offset" : 0,
"end_offset" : 2,
"type" : "word",
"position" : 0
}, {
"token" : "hl2240",
"start_offset" : 0,
"end_offset" : 7,
"type" : "word",
"position" : 0
}, {
"token" : "2240",
"start_offset" : 3,
"end_offset" : 7,
"type" : "word",
"position" : 1
} ]
}

希望对您有帮助

关于elasticsearch - 当数据之间有空格或破折号时,哪个分析器可以获取附加词的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35697941/

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