我有一个产品目录,我使用 Elastica 客户端在 ElasticSearch 中编制索引。
在实现搜索时,我在键入的搜索词之后附加*
,这样当一个类型whis
或whisk
他已经开始看到whisky
.
但我也想显示poster
一种类型posters
的结果。
我能够使用snowball
过滤器实现复数到单数的结果。但要使其正常工作,我必须删除*
.
这很糟糕,因为在输入完整的单词之前没有结果可以显示。
有什么想法可以解决这个问题吗?我的分析器代码:(取自这里)
'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'
)
)
)