Hit*_*esh 6 elasticsearch elastica
我有一个产品目录,我使用Elastica客户端在ElasticSearch中编制索引.我是ElasticSearch BTW的新手.
我的目录中有些产品有't-shirt'其名称.但是,如果我输入,它们将不会出现在搜索结果中'tshirt'.
我能做什么,'t-shirt'也可以弹出结果?
我已经按照本教程并为索引实现了以下内容:
'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'
)
)
)
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用映射字符过滤器删除连字符:
这样的东西会删除连字符:
{
"index" : {
"analysis" : {
"char_filter" : {
"my_mapping" : {
"type" : "mapping",
"mappings" : ["-=>"]
}
},
"analyzer" : {
"custom_with_char_filter" : {
"tokenizer" : "standard",
"char_filter" : ["my_mapping"]
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它是一种钝器力量的东西,因为它会剥掉所有连字符,但它应该使"T恤"和"T恤"匹配