term
推荐器会基于编辑的距离推荐术语(这翻译的简直丧心病狂啊,其实就是基于已输入的文本进行term
的推荐),可能说联想搜索词更好理解点,term
推荐器是基于Levenstein edit distance算法推荐术语的,提供的推荐文本是在术语推荐之前就被分析的。term
推荐器并不会将上述请求中的查询部分考虑其中。term
推荐器的常规选项有:
text
:表示建议文本,必选参数,可以设置为全局参数或在每个推荐器中设置;field
:表示获取候选建议的范围域,必选参数,可以设置为全局参数或在每个推荐器中设置;analyzer
:表示分析推荐文本的分析器,默认是推荐字段的搜索分析器;size
:表示每个推荐文本标记返回的最大修正的数量;sort
:表示每个推荐文本术语会如何排序,可能值有2个:score
:表示首先按得分排序,然后再按文档频率,最后再按它术语本身排序;frequency
:表示先按文档频率排序,然后再按相似性得分,最后按术语本身;
suggest_mode
:这个参数控制了什么样的推荐会被包括进来或者推荐什么样的推荐文本术语,可能的值有3个:missing
:只提供索引中没有的为推荐文本术语提供的建议,这是默认值;popular
:只推荐建议,这个建议发生在比原始文档显示文本更多的情况下;always
:基于在推荐文本中的术语推荐任意匹配到的建议;
除了上述的选项,还有其他的术语推荐选项:
lowercase_terms
:表示在文本分析后,将推荐文本术语转换成小写;max_edits
:表示可以被选为建议的edit distance的最大值,只能是1和2之前的数值,默认是2;prefix_length
:表示可以被选为建议的最小前缀字符的长度,默认为1,增加这个长度可以提高拼写检查的性能,通常拼写错误不会发生在术语的最前面(prefix_len
参数已经丢弃);min_word_length
:表示推荐文本的最小产嘀咕,默认为4(min_word_len
参数已被丢弃);shard_size
:表示从每个独立碎片(分片)获取建议的最大数量,在减少阶段(reduce phase)基于size
参数的设置只返回前N个建议,默认就是size
提供的值,将shard_size
设置为大于size
参数,可能对得到性能为代价更准确的文档频率拼写纠正更加有效,因为术语分区中碎片,碎片级别文档频率的拼写纠正可能不准确,增加这将使这些文档频率更精确;max_inspections
:表示一个因子,这个参数和shard_size
参数相乘以便在碎片级别检查更多的候选者的拼写错误,可以提高以性能为代价的准确性,参数默认为5;min_doc_freq
:表示一个建议中应包含文档数目的最小限制,可以指定为一个确切的数或文档数的相对百分比,可以通过推荐高频术语来提高质量,min_doc_freq
默认是0(即不开启此功能),如果将这个参数指定为一个大于1的值(不能是小数,只是大于1时不能指定为小数),碎片级别的文档频率用于这个选项;max_term_freq
:表示推荐文本可以包含的文档数目的最大限制,可以是一个代表文档频率的确切值,也可以是一个相对百分数(比如0.4),如果指定为一个大于1的数(不可以指定为小数),默认是0.01f,这个参数可以用来排除高频术语的拼写检查,高频术语通常在前几个字符是拼写正确的以提高拼写检查的性能,碎片(分片)性能文档频率用于这个选项;string_distance
:表示一个字符串距离用于和推荐内容相比它们之间的相似性,这个参数可能的值有5个:internal
:表示默认的基于damerau_levenshtein算法,但在比较字符串距离内的索引已经做过高度优化;damerau_levenshtein
:是一种基于Damerau-Levenshtein算法的字符串距离算法;levenshtein
:是一种基于Levenshtein edit distance算法的字符串距离算法;jaro_winkler
:是一种基于Jaro-Winkler算法的字符串距离算法;ngram
:是一种基于字符连词的字符串距离算法;