初探solr搜索

  solr是一個基於lucene的搜索引擎,lucene是一個全文檢索引擎的架構.solr在此之上進行了封裝完善,變成了一個很流行實用的搜索引擎,能夠應對絕大部分的搜索需求.使用搜索引擎有如下幾點好處:html

  • 能夠減小對數據庫的壓力,當數據量大或者查詢頻繁的的時候,頻繁的使用查詢對數據庫資源消耗較大.
  • 能夠對搜索結果進行權重設置來排序
  • 能夠結合各類中文分詞器,達到理想的搜索效果 例如ik,jecsg,solr自己對英文檢索比較準確,可是對中文檢索漏洞較多

  solr能夠依賴jetty容器,也能夠依賴在tomcat容器下,安裝步驟大同小異,基於自帶jetty容器安裝步驟傳送陣:http://blog.csdn.net/k778899jx/article/details/78121250算法

  solr支持自動增量更新,經過簡單的配置dataimport.properties文件便可,可是當數據庫表大的時候時候最後利用api來,solr自己的自動增量更新須要對時間進行排序,在數據大的時候消耗資源較多,這時候咱們能夠本身手動利用api來執行更爲安全,效率比solr自己執行要慢上一些.實際運用中,咱們須要對部分字段進行分詞搜索,來提升搜索滿意度,可是solr自己的分詞算法對中文並不友好,能夠用其餘的中文分詞器來結合,傳送陣:http://blog.csdn.net/faith_mo_blog/article/details/51784970.ik分詞器應對站內搜索比較適用,因此咱們選擇了ik做爲分詞器,須要注意的是ik自12年後做者並無再更新,在最後一版中源碼中有一個問題,做者將最細密度算法做爲了全局變量,修改爲局部變量即可使用智能分詞跟最細分詞進行切換.後續還遇到了一個問題,在使用中英文分詞結合的時候我將英文設爲多字母分割後會跟ik的智能分詞產生衝突,最後我把英文分詞改爲以單字母形式便可.沒有深究此問題,不明因此然.數據庫

  當使用多字段搜索,或者須要特定的排序顯示的時候,權重功能必不可少,也就是solr的評分設置,solr的評分設置是從lucene移植的,底層是基於TF-IDF算法(https://www.cnblogs.com/yjf512/p/4860134.html).通常設置權重排序有三種方式:api

  1. 修改底層的boost評分規則,爲自身的搜索須要進行定製.
  2. 在生成索引的時候建一個新的字段來做爲權重的標識.
  3. 利用solr自己的edismax進行評分排序,edismax是dismax的進階版

  solr自己的edismax權重設置是對不一樣字段來進行不一樣的權重配置,像qf=Title^1.1 Content^0.4這樣,若是採用第二種方式則比較靈活,能夠對特定的詞進行權重設置.tomcat

  solr還能夠跟zookeeper結合組成分佈式的solrcloud,原理並無發生改變,變成solrcloud以後能夠提升索引生成的速度,若是對搜索數據的及時性要求較高,能夠採用此模式,此模式有一個弊端那就是,採用分佈式後,索引數據塊存放到各個solr下,在進行分組排序的時候只會對本低地的數據進行排序,因此根據自身狀況來使用.安全

相關文章
相關標籤/搜索