solr檢索

前言

      Solr/Lucene是一個全文檢索引擎,全文引擎和SQL引擎所不一樣的是強調部分相關度高的內容返回,而不是全部內容返回,
因此部份內容包含在索引庫中卻沒法命中是正常現象。
      多數狀況下咱們建議優化分詞器或者引擎其它部分達到預期檢索效果。優化

  1. 分詞器調節

    按照以下步驟進入分詞器調試界面搜索引擎

一、選擇collectionspa

二、選擇analysis菜單debug

三、在索引框中輸入要索引的文檔調試

四、在檢索框中輸入要檢索的詞語code

五、選擇須要調試的字段,這裏假設要將內容索引到title字段,而且在該字段上檢索xml

六、點擊分析按鈕索引

七、在展現出來的原文分詞結果(左側)和關鍵詞分詞結果(右側)中對比最下面一行,若右側分詞結果的全部詞在左側都能找到,那麼在AND關係的檢索時可以匹配;若部分可以找到,那麼在OR關係的檢索中可以匹配;若徹底找不到,那麼沒法匹配。文檔

 

  1. 檢索調節

    1. 準備數據

索引一條記錄,id=1,title=中華人民共和國來作調試it

  1. 直接檢索沒法出結果問題

直接檢索中華人民共和國

 

 

從上圖看(圖可放大),最終檢索結果被解析成了」+text:中 +text:華 +text:人 +text:民 +text:共 +text:和 +text:國」,由於咱們在q的輸入框中沒有輸入檢索字段,因此solr會檢索默認字段」text」,而該字段不包含咱們須要的信息,因此檢索無結果。

 

輸入正確的字段title後,能夠成功檢索出來

 

 

  1. 部分匹配沒法出結果問題

原文中華人民共和國分詞後:中華、人民、共和國

搜索詞中華解放軍分詞後:中華、解放軍

部分匹配,咱們也但願檢索出來

 

從上圖看(圖可放大),最終檢索結果被解析成了"+title:中 +title:華 +title:解放 +title:軍",加號(+)標識邏輯與關係,至關於檢索"title:中 AND title:華 AND title:解放 AND title:軍",所以沒法檢索出來

 

 

 

修改默認邏輯關係(q.op=OR)爲OR後,分此後的檢索式加號沒了,是邏輯或關係,所以可以成功檢索出來。這裏OR必定要大寫。

 

這個默認檢索關係能夠經過修改schema.xml的defaultOperator進行配置
<solrQueryParser defaultOperator=」OR」/>

 

  1. 多關鍵字檢索沒法出結果問題

有時候用戶會用空格輸入多個關鍵字進行檢索,如title:中華 人民 共和國

經過開啓debugQuery參數,咱們看到,最終檢索結果被解析成了

 

+(+title:中 +title:華) +(+text:人 +text:民) +(+text:共 +text:和 +text:國)

 

 

中華是在title上檢索的,後面的詞都到text字段檢索了

經過指定默認字段df爲title,能夠修正最終檢索式,從上圖看,修正後結果能夠正常檢索返回。

 

其它

    以上是一些常見數據召回問題。

    檢索調優是搜索引擎使用中最複雜的過程,須要在長期實踐中積累經驗,同時須要瞭解數據狀況,業務特色等多方面根據狀況進行調整。

相關文章
相關標籤/搜索