我希望能够自动完成名称。
例如,如果我们有 name ,John Smith
我希望能够搜索Jo
并获取文档。Sm
John Sm
另外,我不想jo sm
匹配文件。
我目前有这个分析仪:
return array(
'settings' => array(
'index' => array(
'analysis' => array(
'analyzer' => array(
'autocomplete' => array(
'tokenizer' => 'autocompleteEngram',
'filter' => array('lowercase', 'whitespace')
)
),
'tokenizer' => array(
'autocompleteEngram' => array(
'type' => 'edgeNGram',
'min_gram' => 1,
'max_gram' => 50
)
)
)
)
)
);
这样做的问题是,首先我们将文本拆分,然后使用边图进行标记。
这导致:
j
jo
joh
john
s
sm
smi
smit
smith
这意味着,如果我搜索john smith
or john sm
,则不会返回任何内容。
所以,我需要生成如下所示的令牌
j
jo
joh
john
s
sm
smi
smit
smith
john s
john sm
john smi
john smit
john smith
:
如何设置我的分析器以便生成这些额外的令牌?