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