模糊分析介紹
模糊分析器(fuzzy)適用于模糊搜索,模糊搜索是指在用戶搜索意圖不明確時,搜索引擎將用戶的查詢(query)與待檢索的內容(doc)進行模糊匹配,找出與查詢相關的內容。是否相關主要從兩個方面衡量:一是query是doc中某些內容的全拼或者簡拼;二是query中內容直接在doc中出現。模糊搜索無法精確理解用戶的查詢意圖,返回的結果中可能包括了一大批用戶不想要的信息,所以在使用模糊搜索時一定要結合自己的實際場景,慎重使用。
使用模糊分析器schema中指定的分析器為fuzzy,在查詢時需要指定analyzer子句,對應的索引的分析器為fuzzy_search_analyzer。
例如:
schema配置
{
"fields":[
{
"field_type":"INT64",
"field_name":"id"
},
{
"field_type":"TEXT",
"field_name":"title",
"analyzer":"fuzzy"
}
],
"summarys":{
"compress":false,
"summary_fields":[
"id",
"title"
]
},
"indexs":[
{
"has_primary_key_attribute":true,
"index_fields":"id",
"is_primary_key_sorted":true,
"index_name":"id",
"index_type":"PRIMARYKEY64"
},
{
"doc_payload_flag":1,
"index_fields":"title",
"index_name":"title_index",
"index_type":"TEXT"
}
],
"attributes":[
"id"
],
"table_name":"test_table"
}
查詢query:config=start:0,hit:10,format:json&&query=title_index:'abc'&&analyzer=specific_index_analyzer:title_index#fuzzy_search_analyzer
注:
* title在schema中使用了fuzzy分析器,并創建了title_index
* 查詢時通過analyzer子句指定title_index使用fuzzy_search_analyzer
適用場景
模糊搜索主要應用于用戶搜索意圖不明確或者數據較少,且想返回較多的查詢結果的時候。主要包括以下場景。
拼音搜索
介紹:拼音搜索是指doc中的數據為中文,而希望使用全拼或者簡拼進行查詢的搜索。
案例:
文檔內容為:開放搜索
query分別為:”kai”、”kaifang”、”sousuo”、“kaifangsousuo”、”k”、”kf”、”ss”、”kfss”,
均能將此條doc召回
?
注意事項:
拼音搜索查詢時使用雙引號查詢
如果希望搜索內容在doc中是相連的,建議在查詢詞兩邊加上雙引號。拼音搜索中查詢詞兩邊最好都使用雙引號,這是因為用戶輸入的拼音是具有一定的意圖的,用戶搜索”kfss”(開放搜索)其實是希望這些詞是要連在一起的。
前綴搜索
介紹:前綴搜索是指搜索以指定前綴開頭的內容的檢索。
案例:
#模糊搜索支持的前綴標識符為’^’,如果用戶想搜以138開頭的手機號
query可寫成”^138”(注意是雙引號查詢)
注意事項:
不支持中文前綴匹配,
前綴匹配時,query需要用雙引號。
后綴匹配
介紹:后綴搜索是指搜索以指定后綴結尾的內容的檢索。
案例:
#模糊搜索支持的后綴標識符為’$’,如果用戶想搜以9527結尾的手機號
query可以寫成”9527$”(注意是雙引號查詢)
?
注意事項:
不支持中文后綴匹配,
后綴匹配時,query需要用雙引號。
單字或單字母搜索
介紹:模糊搜索支持單字或單字母搜索。單字或單字母這種使用場景主要是為了擴大召回結果,返回的結果可能不是很準確。
案例:
#文檔內容為:’開放搜索 open search’
query=default:’放’或者 query=default:’o’都能將其召回
短語查詢
介紹:短語查詢按雙引號限制位置關系,并且只有連續的字母和數字可以用短語查詢。
案例:
#1.query=default:"開放搜索"
僅能召回文檔內容為“xxx開放搜索xxx”的文檔,不能召回“xxx搜索開放xxx”的文檔;
#2.query=default:"華為P"
不能召回“華為P20”的文檔,因為不符合“只有連續的字母和數字可以用短語查詢”的規則。這種場景請使用單引號進行查詢。
注意事項:
短語查詢使用雙引號
短語查詢召回的結果準確性更高,減少了文檔召回量(一般此類搜索場景建議使用中文通用分詞)比較消耗性能。
模糊搜索用于搜索意圖不明確或者數據較少想返回更多查詢結果的場景,因此除了拼音搜索、前后綴、以及短語查詢的場景,基本使用單引號。
?
注意事項
模糊搜索返回的結果默認按照命中的詞在字段的前后位置進行排序。比如某個應用的title字段需要模糊搜索,doc1的內容為開放搜索,doc2的內容為喜歡使用開放搜索,當搜索”kfss”時,doc1默認會排在doc2的前面。
查詢時只有英文、數字和拼音支持前綴和后綴搜索,中文不支持。
使用模糊分析器的字段中的標點符號會被過濾掉。
使用模糊分析器的字段中的全角字符會被轉為半角字符。
使用模糊分析器的字段中的英文和數字及拼音不支持飄紅。