Solr初級教程

預覽

本文檔簡要介紹如何運行solr,如何進行數據操做。html

環境

本教程使用solr 4.9,須要。。。
1. Java 1.7或者更高。 2. 下載solr,地址java

開始

解壓solr壓縮包,而且進入到"example"文件夾中。web

Solr能夠在不少Java容器中運行,本教程使用jetty。sql

運行example文件夾中的start.jarjava -jar start.jar,就可使用jetty運行solr的war包,配置文件使用的是example中的configs。
上面的命令會啓動jetty服務器,端口默認是8983,而且會將日誌打印到控制檯。
能夠經過http://localhost:8983/solr/來打開solr的管理員頁面。數據庫

數據索引

Solr服務器已經起開了,可是沒有任何數據。咱們能夠經過post命令來向其中add(update、delete、pending adds and deletes)文檔來修改solr的索引。實現的方式詳情apache

exampledocs目錄中包含了一些樣例文件,這些文檔能夠經過命令post到solr中。在此咱們使用java -jar post.jar -h這種方式。json

java -jar post.jar solr.xml monitor.xml

如今Solr中索引了兩篇文檔,而且事物已經提交。咱們能夠打開http://localhost:8983/solr/#/collection1/query這個連接,來進行實驗,在"q"這個輸入框中輸入「solr」,點擊「Excute Query」,瀏覽器會跳到http://localhost:8983/solr/collection1/select?q=solr&wt=xml頁面。瀏覽器

咱們能夠將全部的xml文檔都添加到Solr中,java -jar post.jar *.xml服務器

如今咱們可使用Solr Query Syntax來查詢數據。ide

還有不少種方式將數據導入到Solr中:
+ 經過Data Import Handler(DIH)從數據庫中導入數據 + 加載CSV文件(文件中的數據用逗號分隔),csv文件能夠是Excel和Mysql導出的。 + Post json文檔+ 經過Solr Cell索引二進制文檔,如word或者pdf。 + 經過java或者solr支持的其餘語言,用程序建立並導入到solr中。

Update數據

咱們注意到即便solr.xml這個文檔被導入了兩次,可是咱們在搜索solr關鍵字時,仍舊獲得一個結果。這是由於每一個文檔都有一個惟一性的字段"id"。向solr中添加文檔時,若是id相同,solr就會更新這篇文檔。咱們能夠經過http://localhost:8983/solr/#/collection1/plugins/core?entry=searcher這個頁面中的numDocsmaxDoc來驗證。

numDocs表明索引中的document的數目(這個數目可能比solr中xml文件的數目大,由於單個xml文件可能包含多個document)。numDocs可能比maxDocs還要大,由於某些文檔可能被刪除了,可是索引尚未更新。即便咱們屢次post同一份xml文件,numDocs也不會增長,由於id相同,solr作的是update動做。

編輯這些xml文件,修改其中的內容,而後從新運行java -jar post.jar命令,再進行搜索,咱們就能夠看到剛纔修改的內容。

Delete數據

咱們能夠向solr post刪除命令,若是指定了id就是刪除某篇document;若是這個命令中的query能夠匹配多個document,那就刪除多個document(當心)。下面的命令會刪除指定的document。

    java -Ddata=args -Dcommit=false -jar post.jar "<delete><id>SP2514N</id></delete>"

上面的命令,咱們指定了commit=false,因此咱們還可能會檢索到剛剛刪除的document,由於索引尚未更新。
經過statistics page這個updateHandler頁面,咱們能夠看到刪除document生效的過程,deletesById這個值降爲0,cumulative_deletesByIdautocommit這兩個增長。

下面是使用query批量刪除document的示例。

    java -Dcommit=false -Ddata=args -jar post.jar "<delete><query>name:DDR</query></delete>"

若是咱們想讓以前的變化當即生效,咱們能夠經過命令強制solr使用新的searcher:

    Java -jar post.jar -

如今,再次執行以前的query,能夠發現已經刪除的document,不會再被搜索出來了。咱們能夠再次經過statistics page來看updateHandlercommit的個數,和searcher中的numDocs。

使用新的searcher,可能會花費很高的代價(時間、內存等),因此最好是積攢不少changes,而後批量提交給solr,再讓solr重建索引。還有一個命令optimize,它和commit命令完成一樣的操做,可是它會強制全部的索引分片都merge到同一個分片中,這樣很耗費資源,但能提升檢索速度,若是你的索引不常常變化,能夠試試。

全部的update命令,均可以使用xmljson兩個格式。

爲了下面的教程,再把exampledocs文件夾中的xml文件,post到solr中。

    java -jar post.jar *.xml

query數據

繼續閱讀

相關文章
相關標籤/搜索