在搜尋中查詢關鍵詞的意圖判斷直接決定搜尋到的結果是否可以滿足需求。OpenSearch中的查詢分析可以用來理解Query搜尋意圖;通過對Query進行一系列智能分析,將Query進行改寫後再在引擎中執行檢索和排序。下文將簡單介紹查詢分析各個具體的準系統。
停用詞功能基本介紹
過濾查詢中無意義的詞(一般是使用頻度過高的但不影響查詢結果的詞,比如標點符號、語氣助詞等)。
拼字錯誤修正功能基本介紹
使用者輸入的Query不總是準確的,錯誤的輸入可能導致查詢結果不符合預期或無結果,因此需要對使用者的輸入進行拼字檢查。查詢分析中提供的拼字檢查功能,能糾正查詢詞中的錯誤,給出正確的查詢詞,並根據錯誤修正的可信度高低,決定當前查詢是否使用錯誤修正後的詞。
詞權重功能基本介紹
詞權重分析查詢中每一個詞在文本中的重要程度,並將其量化成權重,權重較低的詞可能不會參與召回。這樣可以避免當使用者輸入的查詢詞中包含一些權重低的詞時,仍然按使用者輸入的查詢詞限制召回,導致命中結果過少。
同義字功能基本介紹
在實際搜尋情境中,會經常出現包含同義字的表達。例如,使用者在搜尋蘋果手機的同時,包含iPhone的內容也能被檢索並呈現。同義字功能主要是對查詢詞進行同義擴充,擴大召回和查詢詞同義的文檔。
實體識別功能基本介紹
具名實體識別(Named Entity Recognition,簡稱NER)是對Query分詞後識別每個語義實體的功能。每個語義實體會被打上相應的類型標籤,類型標籤重要性低的語義實體在查詢中可能會被省略。比如“耐克修身連衣裙”,實體識別的結果為“耐克/品牌/中”、“修身/款式元素/低”、“連衣裙/品類/高”。
類目預測功能基本介紹
類目預測指的是對查詢關鍵詞意圖和業務類目相關程度的預測,結合相關的排序運算式可以調整文檔在結果中的排序。比如,搜尋“手機”結果中有“手機”也有“手機殼”,根據類目預測可以分析出“數位產品”類目相關度高於“數位配件”,所以在排序的時候“數位產品”類結果會優先排序。
文本向量化功能基本介紹
使用向量模型,將Query中的文本轉化為向量,然後使用多路搜尋功能,同時返迴文本搜尋結果。例如:查詢詞“OpenSearch”,會根據所選索引分析器中的向量模型進行文本向量化,轉化為[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內容 | 教育行業 | 是否支援幹預詞典 |
停用詞 | √ | √ | √ | √ | √ | √ |
拼字錯誤修正 | √ | √ | √ | √ | √ | √ |
詞權重 | √ | √ | √ | √ | √ | √ |
同義字 | √ | √ | √ | √ | √ | √ |
類目預測 | √ | √ | √ | √ | √ | √ |
實體識別 | × | √ | √ | × | × | √ |
文本向量化 | × | × | × | × | √ | × |
注:√ 表示支援,× 表示不支援。 |