gpt4 book ai didi

ElasticSearch - 在名称中使用连字符进行搜索

转载 作者:行者123 更新时间:2023-11-29 02:48:16 27 4
gpt4 key购买 nike

我有一个产品目录,我正在使用 Elastica 客户端在 ElasticSearch 中编制索引。顺便说一句,我对 ElasticSearch 还很陌生。

我的目录中有些产品的名称中包含 't-shirt'。但是,如果我输入 'tshirt',它们不会出现在搜索结果中。

我该怎么做才能让 't-shirt' 也能在结果中弹出?

我关注了this教程并为索引实现了以下内容:

'analysis' => array(
'analyzer' => array(
'indexAnalyzer' => array(
'type' => 'custom',
'tokenizer' => 'whitespace',
'filter' => array('lowercase', 'mySnowball')
),
'searchAnalyzer' => array(
'type' => 'custom',
'tokenizer' => 'whitespace',
'filter' => array('lowercase', 'mySnowball')
)
),
'filter' => array(
'mySnowball' => array(
'type' => 'snowball',
'language' => 'English'
)
)
)

最佳答案

您可以尝试使用映射字符过滤器删除连字符:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-mapping-charfilter.html

像这样的东西会删除连字符:

{
"index" : {
"analysis" : {
"char_filter" : {
"my_mapping" : {
"type" : "mapping",
"mappings" : ["-=>"]
}
},
"analyzer" : {
"custom_with_char_filter" : {
"tokenizer" : "standard",
"char_filter" : ["my_mapping"]
}
}
}
}
}

这是一种钝力工具,因为它会去除所有连字符,但它应该使“t-shirt”和“tshirt”匹配

关于ElasticSearch - 在名称中使用连字符进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23637493/

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