2014-05-13 13 views
0

我有一个产品目录,我使用Elastica客户端在ElasticSearch中建立索引。ElasticSeach - 获取不完整和复数的单词

在实施搜索,我是在输入检索词后附加*这样,当一个类型whiswhisk他就已经开始看到搜索结果whisky

但是我想显示poster的结果,当您输入posters时也是如此。

我能够使用snowball过滤器实现单数复数结果。但要做到这一点,我必须删除*

这很糟糕,因为在输入完整单词之前没有结果显示。

任何想法,我可以去这个?我的分析代码:(从here拍摄)

'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' 
     ) 
    ) 
) 
+0

凹凸!任何人都知道吗? – Hitesh

回答

0

我去自定义功能。

我用准确的搜索短语搜索而没有*。我的代码查找结果计数。如果它是一个不完整的单词,它可能会返回空结果。所以我追加*到结果查询并做另一个搜索。

这使得我的自动提示结果更慢,但功能更强。