名前をオートコンプリートできるようにしたい。
たとえば、名前が の場合、ドキュメントを検索して取得できるようJohn Smithにしたいと考えています。JoSmJohn 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 smithorを検索してjohn smも何も返されないことを意味します。
したがって、次のようなトークンを生成する必要があります
j jo joh john s sm smi smit smith john s john sm john smi john smit john smith。
これらの余分なトークンを生成するようにアナライザーを設定するにはどうすればよいですか?