查詢分析
在搜索中查詢關鍵詞的意圖判斷直接決定搜索到的結果是否可以滿足需求。OpenSearch中的查詢分析可以用來理解Query搜索意圖;通過對Query進行一系列智能分析,將Query進行改寫后再在引擎中執行檢索和排序。本文將簡單介紹查詢分析各個具體的基本功能。
停用詞功能基本介紹
過濾查詢中無意義的詞(一般是使用頻度過高的但不影響查詢結果的詞,比如標點符號、語氣助詞等)。
拼寫糾錯功能基本介紹
用戶輸入的Query不總是準確的,錯誤的輸入可能導致查詢結果不符合預期或無結果,因此需要對用戶的輸入進行拼寫檢查。查詢分析中提供的拼寫檢查功能,能糾正查詢詞中的錯誤,給出正確的查詢詞,并根據糾錯的可信度高低,決定當前查詢是否使用糾錯后的詞。
詞權重功能基本介紹
詞權重分析查詢中每一個詞在文本中的重要程度,并將其量化成權重,權重較低的詞可能不會參與召回。這樣可以避免當用戶輸入的查詢詞中包含一些權重低的詞時,仍然按用戶輸入的查詢詞限制召回,導致命中結果過少。
同義詞功能基本介紹
在實際搜索場景中,會經常出現包含同義詞的表達。例如,用戶在搜索蘋果手機的同時,包含iPhone的內容也能被檢索并呈現。同義詞功能主要是對查詢詞進行同義擴展,擴大召回和查詢詞同義的文檔。
實體識別功能基本介紹
命名實體識別(Named Entity Recognition,簡稱NER)是對Query分詞后識別每個語義實體的功能。每個語義實體會被打上相應的類型標簽,類型標簽重要性低的語義實體在查詢中可能會被省略。比如“耐克修身連衣裙”,實體識別的結果為“耐克/品牌/中”、“修身/款式元素/低”、“連衣裙/品類/高”。
類目預測功能基本介紹
類目預測指的是對查詢關鍵詞意圖和業務類目相關程度的預測,結合相關的排序表達式可以調整文檔在結果中的排序。比如,搜索“手機”結果中有“手機”也有“手機殼”,根據類目預測可以分析出“數碼產品”類目相關度高于“數碼配件”,所以在排序的時候“數碼產品”類結果會優先排序。
文本向量化功能基本介紹
使用向量模型,將Query中的文本轉化為向量,然后使用多路搜索功能,同時返回文本搜索結果。例如:查詢詞“開放搜索”,會根據所選索引分析器中的向量模型進行文本向量化,轉化為[0.1,0.3,0.5],然后到向量索引中得到向量搜索的結果。可在多路搜索模塊配置相應查詢策略。
索引范圍
支持配置的索引范圍的分析器類型:中文-通用分析、中文-電商分析、IT-內容分析、游戲行業分析、教育行業分析
通過配置應用或線下變更可以更改應用結構中的索引分析方式
Query改寫策略
“Query改寫策略”功能可控制參與召回的term是以AND或OR關系包含在查詢結果中。 注:詞權重或實體識別可以影響參與召回的term的分析。 示例:如Query為:“耐克運動鞋”,分詞后term為:“耐克/運動/鞋”
連接符為AND時:Query改寫結果為
(default:'耐克' AND default:'運動' AND default:'鞋')
連接符為OR時:Query改寫結果為
(default:'耐克' OR default:'運動' OR default:'鞋')
“Query改寫策略”功能開啟方法: 在創建/編輯查詢分析時,在Query改寫策略欄中選擇AND或OR即可:
如query詞比較復雜的情況下,查詢分析會改寫兩次query。
若第一次改寫的query可以查到結果,則不會觸發第二次改寫的query進行查詢;
若第一次改寫的query沒有查到結果,則會觸發第二次改寫的query進行擴大范圍查詢。
查詢分析重查策略
當用戶配置查詢分析后,如果第一次查詢召回的結果為0,則會改寫原先無結果的query觸發重查,用戶可以通過disable
參數控制是否需要重查,以及通過re_search
參數設置重查策略,詳情可參考搜索處理。
舉例:
disable=re_search # 表示關閉重查
re_search=strategy:threshold,params:total_hits#6 #表示當total hits少于6時,會進行重查
當用戶設置重查后,可添加fetch=qp:profile
參數來判斷本次請求是否是重查召回的結果:
qp-->re_search_times,re_search_times=0表示沒有觸發重查,例如;
"qp": [
{
"app_name": "130180448",
"query_correction_info": [
{
"index": "index",
"original_query": "芭比布朗粉餅",
"corrected_query": "芭比波朗粉餅",
"correction_level": 1,
"processor_name": "spell_check"
}
],
"re_search_times": 0
}
],
配置re_search以及fetch參數后的請求串如下:
query=query=index:'搜索測試'&&config=start:0,hit:10,format:fulljson&fetch_fields=title;subtitle&fetch=qp:profile&re_search=re_search=strategy:threshold,params:total_hits#6
多qp查詢介紹
在一次查詢請求中,可以設置多個查詢分析,即qp參數的格式為:qp=qpName1,qpName2
,但是有如下使用限制,假設現在有兩個索引,index_1、index_2,兩個查詢分析器qp_1、qp_2,則:
情況一:index_1綁定qp_1,index_2綁定qp_2:
#查詢語句
index_1:'xxx' AND index_2:'xxx' & qp=qp_1,qp_2 #正確
index_1:'xxx' & qp=qp_1,qp_2 #正確
index_2:'xxx' & qp=qp_1,qp_2 #正確
情況二:index_1綁定qp_1,index_1綁定qp_2:
#查詢語句
index_1:'xxx' & qp=qp_1,qp_2 #報錯,6601:Rewrite index used in multi qp chains
index_1:'xxx' & qp=qp_1 #正確
index_2:'xxx' & qp=qp_2 #報錯,6606:No index need to process by QP
查詢分析在行業類型間的對比
查詢分析功能 | 通用行業 | 電商行業 | 電商增強 | IT內容 | 教育行業 | 是否支持干預詞典 |
停用詞 | √ | √ | √ | √ | √ | √ |
拼寫糾錯 | √ | √ | √ | √ | √ | √ |
詞權重 | √ | √ | √ | √ | √ | √ |
同義詞 | √ | √ | √ | √ | √ | √ |
類目預測 | √ | √ | √ | √ | √ | √ |
實體識別 | × | √ | √ | × | × | √ |
文本向量化 | × | × | × | × | √ | × |
注:√ 表示支持,× 表示不支持。 |