搜索技術(shù) Solr 入門詳解

一、介紹

企業(yè)站內(nèi)搜索技術(shù)選型

在一些大型門戶網(wǎng)站、電子商務(wù)網(wǎng)站等都需要站內(nèi)搜索功能,使用傳統(tǒng)的數(shù)據(jù)庫查詢方式實現(xiàn)搜索無法滿足一些高級的搜索需求,比如:搜索速度要快、搜索結(jié)果按相關(guān)度排序、搜索內(nèi)容格式不固定等,這里就需要使用全文檢索技術(shù)實現(xiàn)搜索功能。

1. 單獨使用Lucene實現(xiàn)

單獨使用Lucene實現(xiàn)站內(nèi)搜索需要開發(fā)的工作量較大,主要表現(xiàn)在:索引維護、索引性能優(yōu)化、搜索性能優(yōu)化等,因此不建議采用

2. 使用Google或Baidu接口

通過第三方搜索引擎提供的接口實現(xiàn)站內(nèi)搜索,這樣和第三方引擎系統(tǒng)依賴緊密,不方便擴展,不建議采用。

3. 使用Solr實現(xiàn)

基于Solr實現(xiàn)站內(nèi)搜索擴展性較好并且可以減少程序員的工作量,因為Solr提供了較為完備的搜索引擎解決方案,因此在門戶、論壇等系統(tǒng)中常用此方案。

什么是Solr

Solr 是Apache下的一個頂級開源項目,采用Java開發(fā),它是基于Lucene的全文搜索服務(wù)器。Solr提供了比Lucene更為豐富的查詢語言,同時實現(xiàn)了可配置、可擴展,并對索引、搜索性能進行了優(yōu)化

Solr可以獨立運行,運行在 Jetty、Tomcat 等這些 Servlet 容器中,Solr 索引的實現(xiàn)方法很簡單,用 POST 方法向 Solr 服務(wù)器發(fā)送一個描述 Field 及其內(nèi)容的 XML 文檔,Solr根據(jù)xml文檔添加、刪除、更新索引 。Solr 搜索只需要發(fā)送 HTTP GET 請求,然后對 Solr 返回 Xml、json 等格式的查詢結(jié)果進行解析,組織頁面布局。Solr不提供構(gòu)建UI的功能,Solr提供了一個管理界面,通過管理界面可以查詢Solr的配置和運行情況。

solr是基于lucene開發(fā)企業(yè)級搜索服務(wù)器,實際上就是封裝了lucene。

Solr 是一個獨立的企業(yè)級搜索應(yīng)用服務(wù)器,它對外提供類似于 Web-service的API 接口。用戶可以通過 http 請求,向搜索引擎服務(wù)器提交一定格式的文件,生成索引;也可以通過提出查找請求,并得到返回結(jié)果

Solr類似 webservice,調(diào)用接口,實現(xiàn)增加,修改,刪除,查詢索引庫。

solr特性
  • 高級的全文搜索功能
  • 專為高通量的網(wǎng)絡(luò)流量進行的優(yōu)化
  • 基于開放接口(xml和http)的標準
  • 綜合的html管理界面
  • 可伸縮性-能夠有效地復(fù)制到另外一個Solr搜索服務(wù)器
  • 使用xml配置達到靈活性和適配性
  • 可擴展的插件體系

Solr與Lucene的區(qū)別

Lucene是一個開放源代碼的全文檢索引擎工具包,它不是一個完整的全文檢索引擎,Lucene提供了完整的查詢引擎和索引引擎,目的是為軟件開發(fā)人員提供一個簡單易用的工具包,以方便的在目標系統(tǒng)中實現(xiàn)全文檢索的功能,或者以Lucene為基礎(chǔ)構(gòu)建全文檢索引擎。

Solr的目標是打造一款企業(yè)級的搜索引擎系統(tǒng),它是一個搜索引擎服務(wù),可以獨立運行,通過Solr可以非??焖俚臉?gòu)建企業(yè)的搜索引擎,通過Solr也可以高效的完成站內(nèi)搜索功能。

Solr 類似 webservice,提供接口,調(diào)用接口,發(fā)送一些特點語句,實現(xiàn)增加,刪除,修改,查詢。

二、solr 安裝(mac)

  1. 首先安裝 jdk 和 jre
  2. 安裝solr:brew install solr安裝solr,可以通過brew edit solr修改要安裝的版本
  3. 啟動 solr:solr start。
    • 默認端口號8083,如果該端口被占用,則會自動切換可用的端口。
      solr start
    • 啟動成功后再瀏覽器輸入URLhttp://127.0.0.1:8983,訪問 solr 后臺管理界面
      瀏覽器效果
  4. 創(chuàng)建 core(可以理解為mysql中的數(shù)據(jù)庫,即一個服務(wù)可以有多個庫):solr create -c test_core
    創(chuàng)建成功的 core
  5. 測試分詞


    測試分詞

由于solr自帶的分詞器無法將中文根據(jù)語義分詞,需要引入中文分詞器 IKAnalyzer

三、IKAnalyzer 安裝

下載地址:https://github.com/jxlwqq/Installing-Solr-and-indexing-MySQL-on-macOS/tree/master/file

1. 下載必要的組件

  • IKAnalyzer jar 包: ik-analyzer-solr5-5.x.jar
  • IKAnalyzer 配置文件: IKAnalyzer.cfg.xml
  • 詞庫: mydict.dic 和 stopword.dic

下載后,將相關(guān)文件復(fù)制到相應(yīng)的目錄中,操作目錄如下:

cp ik-analyzer-solr5-5.x.jar /usr/local/Cellar/solr/7.3.1/server/solr-webapp/webapp/WEB-INF/lib/ 
mkdir /usr/local/Cellar/solr/7.3.1/server/solr-webapp/webapp/WEB-INF/lib/classes/

cp IKAnalyzer.cfg.xml /usr/local/Cellar/solr/7.3.1/server/solr-webapp/webapp/WEB-INF/lib/classes/
cp mydict.dic /usr/local/Cellar/solr/7.3.1/server/solr-webapp/webapp/WEB-INF/lib/classes/
cp stopword.dic /usr/local/Cellar/solr/7.3.1/server/solr-webapp/webapp/WEB-INF/lib/classes/

2. 修改 managed-schema 文件

// test_core 倉庫下
vi /usr/local/Cellar/solr/7.3.1/server/solr/test_core/conf/managed-schema

schema標簽內(nèi)追加以下內(nèi)容:

<fieldType name="text_ik" class="solr.TextField">
    <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<field name="text_ik" type="text_ik" indexed="true" stored="true" multiValued="false"/>

3. 重啟測試

進行重啟:solr restart
進行測試:刷新頁面,進入到 test_core 倉庫下

測試頁面2

測試成功!

四、solr 常用命令

  1. 其他命令
查看版本:solr -version
重啟:solr -version
關(guān)閉:solr stop -all(或者指定端口號:solr stop -p 8983)
創(chuàng)建集合:solr create -c [集合名稱]
刪除集合:solr delete -c [集合名稱]

刪除數(shù)據(jù)

<delete>
    <query>*:*</query>
</delete>
<commit/> 
solr 刪除數(shù)據(jù)

刪除字段

{
    "delete-field" : {
        "name" : "字段名稱"
    },
    "delete-field" : {
        "name" : "字段名稱"
    }
}

提交的地址

POST    http://localhost:8983/solr/集合名稱/schema

添加字段

name: 字段名稱
type: 字段類型
stored: 是否保存
indexed: 是否索引

{
    "add-field" : {
        "name" : "字段名稱",
        "type" : "text_ik",
        "stored" : "true",
        "indexed" : "true"
    },
    "add-field" : {
        "name" : "字段名稱",
        "type" : "text_ik",
        "stored" : "true"
    }
}

提交地址

POST    http://localhost:8983/solr/集合名稱/schema

還可以在管理員界面添加


solr 管理頁面添加字段

參考資料

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一.簡介 Solr是一個獨立的企業(yè)級搜索應(yīng)用服務(wù)器,它對外提供類似于Web-service的API接口。用戶可以通...
    泰安青年閱讀 3,900評論 0 37
  • 1. Solr 官網(wǎng) 搜索引擎是指一個龐大的互聯(lián)網(wǎng)資源數(shù)據(jù)庫,如網(wǎng)頁,新聞組,程序,圖像等。它有助于在萬維網(wǎng)上定位...
    _凌浩雨閱讀 2,272評論 0 4
  • Solr&ElasticSearch原理及應(yīng)用 一、綜述 搜索 http://baike.baidu.com/it...
    樓外樓V閱讀 7,637評論 1 17
  • 搜索技術(shù) SOLR和LUCENE關(guān)系 Solr是基于Lucene做的,Lucene是一套信息檢索工具包,但并不包...
    面朝大海_1234閱讀 558評論 0 2
  • 很多時候,如果有人罵你毛還沒長全。 不要動怒,不要爭辯, 做好你自己的事。 因為假正經(jīng)的人, 最看不慣不正經(jīng)的人。
    浦大魔王76閱讀 106評論 0 0

友情鏈接更多精彩內(nèi)容