模糊分析介紹
模糊搜尋是指在使用者搜尋意圖不明確時,搜尋引擎將使用者的查詢(query)與待檢索的內容(doc)進行模糊比對,找出與查詢相關的內容。是否相關主要從兩個方面衡量:一是query是doc中某些內容的全拼或者簡拼;二是query中內容直接在doc中出現。模糊搜尋無法精確理解使用者的查詢意圖,返回的結果中可能包括了一大批使用者不想要的資訊,所以在使用模糊搜尋時一定要結合自己的實際情境,謹慎使用。
溫馨提示
模糊分析器對應的欄位類型只能是:SHORT_TEXT類型。
模糊分詞查詢一般使用單引號查詢,有以下文檔中描述的具體需求的,才需要使用雙引號查詢。
適用情境
模糊搜尋主要應用於使用者搜尋意圖不明確或者資料較少,且想返回較多的查詢結果的時候。主要包括以下情境。
拼音搜尋
介紹:拼音搜尋是指doc中的資料為中文,而希望使用全拼或者簡拼進行查詢的搜尋。
案例:
文檔內容為:OpenSearch
query分別為:"kai"、"kaifang"、"sousuo"、"kaifangsousuo"、"k"、"kf"、"ss"、"kfss",
均能將此條doc召回
注意事項:
拼音搜尋查詢時使用雙引號查詢
如果希望搜尋內容在doc中是相連的,建議在查詢詞兩邊加上雙引號。拼音搜尋中查詢詞兩邊建議都使用雙引號,這是因為使用者輸入的拼音是具有一定的意圖的,使用者搜尋"kfss"(OpenSearch)其實是希望這些詞是要連在一起的。
首碼搜尋
介紹:首碼搜尋是指搜尋以指定首碼開頭的內容的檢索。
案例:
#模糊搜尋支援的首碼標識符為'^',如果使用者想搜以138開頭的手機號
query可寫成"^138"(注意是雙引號查詢)
注意事項:
不支援中文首碼匹配,
首碼匹配時,query需要用雙引號。
尾碼匹配
介紹:尾碼搜尋是指搜尋以指定尾碼結尾的內容的檢索。
案例:
#模糊搜尋支援的尾碼標識符為'$',如果使用者想搜以9527結尾的手機號
query可以寫成"9527$"(注意是雙引號查詢)
注意事項:
不支援中文尾碼匹配,
尾碼匹配時,query需要用雙引號。
單字或單字母搜尋
介紹:模糊搜尋支援單字或單字母搜尋。單字或單字母這種使用情境主要是為了擴大召回結果,返回的結果可能不是很準確。
案例:
#文檔內容為:'OpenSearch open search'
query=default:'放'或者 query=default:'o'都能將其召回
短語查詢
介紹:短語查詢按雙引號限制位置關係,並且只有連續的字母和數字可以用短語查詢。
案例:
#1.query=default:"OpenSearch"
僅能召迴文檔內容為"xxxOpenSearchxxx"的文檔,不能召回"xxx搜尋開放xxx"的文檔;
#2.query=default:"華為P"
不能召回"華為P20"的文檔,因為不符合"只有連續的字母和數字可以用短語查詢"的規則。這種情境請使用單引號進行查詢。
注意事項:
短語查詢使用雙引號
短語查詢召回的結果準確性更高,減少了文檔召回量(一般此類搜尋情境建議使用中文通用分詞)比較消耗效能。
模糊搜尋用於搜尋意圖不明確或者資料較少想返回更多查詢結果的情境,因此除了拼音搜尋、前尾碼、以及短語查詢的情境,基本使用單引號。
使用限制
使用者建立應用時,將需要進行模糊搜尋的欄位設定為short_text,並給該欄位設定一個模糊分析器即可使用模糊搜尋。模糊搜尋返回的結果預設按照命中的詞在欄位的前後位置進行排序。比如某個應用的title欄位需要模糊搜尋,doc1的內容為OpenSearch,doc2的內容為喜歡使用OpenSearch,當搜尋"kfss"時,doc1預設會排在doc2的前面。模糊搜尋在用於查詢意圖不明確時能夠很好滿足使用者的需求,但在使用過程中需要注意如下限制:
查詢時只有英文、數字和拼音支援首碼和尾碼搜尋,中文不支援;
short_text欄位中的標點符號會被過濾掉;
short_text欄位過濾掉標點符號後,長度限制為100個位元組,超過的內容會被丟掉;
short_text欄位可以建立下拉提示;
由short_text欄位建立的索引不能夠使用查詢分析。
如果short_text欄位只使用了模糊分析器,沒有使用其他分析器建過索引,在取回的摘要中欄位中的全形字元會被轉為半形字元,可以通過建立索引使用中文分析器規避這個問題。
英文和數字及拼音不支援飄紅。