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
:是一種基於字符連詞的字符串距離算法;