elasticsearch-php,谷歌搜索修复拼写错误

时间:2018-04-10 17:20:52

标签: php elasticsearch

我正在建立一个包含产品,品牌和供应商的演示数据库的电子商务项目。我在搜索栏中实现了自动建议,它可以工作。 我无法做的是解决拼写错误。例如,如果用户搜索摩托罗拉为motoroal,则不会给出结果。 有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

这不是一件容易的事。

我使用以下设置:

'analysis' => [
    'filter' => [
        'nGram_filter' => [
            'type' => 'edgeNGram',
            'min_gram' => '1',
            'max_gram' => '20',
            'token_chars' => [
                'letter',
                'digit',
                'punctuation',
                'symbol',
            ],
        ],
    ],
    'analyzer' => [
        'nGram_analyzer' => [
            'type' => 'custom',
            'tokenizer' => 'whitespace',
            'filter' => [
                'lowercase',
                'asciifolding',
                'nGram_filter',
            ],
        ],
    ]
]

然后我设置我的字段地图,将nGram_analyzer用作analyzer

edgeNGram标记符会以这种方式破坏您的文字:

motorola将会突破:m mo mot moto motor motoro motorol motorola

此设置将像自动完成一样,预测用户尝试搜索的内容。

为了帮助解决拼写错误,您需要在字段映射的search_analyzer上应用一些类似的分析器。

相关问题