0

我有一个产品目录,我使用 Elastica 客户端在 ElasticSearch 中编制索引。

在实现搜索时,我在键入的搜索词之后附加*,这样当一个类型whiswhisk他已经开始看到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'
        )
    )
)
4

1 回答 1

0

我使用了自定义功能。

我使用不带*. 我的代码查找结果计数。如果它是一个不完整的单词,它可能会返回一个空结果。因此,我将 a 附加*到结果查询并进行另一次搜索。

这使我的自动建议结果变慢,但很实用。

于 2014-06-04T05:34:17.320 回答