何为搜索及时响应
就是根据用户在搜索框输入的内容,即使展示出用户有可能要搜索的东西,带来良好的用户体验!
本文展示的是用ES如何实现类似功能 !
索引创建
$query = array(
'settings'=>array(
'index'=>array(
'max_result_window'=>1000000,
),
'analysis'=>array(
'filter'=>array(
'edge_ngram_filter'=>array(
'type'=>'edge_ngram',//中华人名共和国 会分成:中、中华、中华人、中华人民等
'min_gram'=>1,//分词之后每个词的最小长度
'max_gram'=>30//分词之后每个词的最大长度
),
'pinyin_edge_ngram_filter'=>array(
'type'=>'edge_ngram',//中华人名共和国 会分成:中、中华、中华人、中华人民等
'min_gram'=>1,//分词之后每个词的最小长度
'max_gram'=>180//分词之后每个词的最大长度
),
'pinyin_full_filter'=>array(
'keep_first_letter'=>false,
'type'=>'pinyin',
'keep_original'=>false,// 当启用此选项时,也会保留原始输入,默认值:false
'keep_full_pinyin'=>false,//当启用该选项,例如:刘德华> [ liu,de,hua],默认值:true
'keep_joined_full_pinyin'=>true,//当启用此选项时,例如:刘德华> [ liudehua],默认值:false
),
'all_pinyin_filter'=>array(//首字母,全拼分词
'keep_first_letter'=>true,//keep_first_letter启用此选项时,例如:刘德华> ldh,默认值:true
'keep_separate_first_letter'=>false,//启用该选项时,将保留第一个字母分开,例如:刘德华> l,d,h,默认:假的&#x