Solr配置及使用
Solr是一個獨立的企業級搜尋應用伺服器,它對外提供類似於Web-service的API介面。使用者可以通過http請求,向搜尋引擎伺服器提交一定格式的XML檔案,生成索引;也可以通過Http Get操作提出查詢請求,並得到XML格式的返回結果。
Solr是一個高效能,採用Java5開發,基於Lucene的全文搜尋伺服器。同時對其進行了擴充套件,提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充套件並對查詢效能進行了優化,並且提供了一個完善的功能管理介面,是一款非常優秀的全文搜尋引擎。
下面來配置Solr全文索引:
首先到網上搜索並下載solr,給大家準備了網站http://mirrors.hust.edu.cn/apache/lucene/solr/
然後按開始鍵輸入cmd進入DOS視窗
在DOS窗口裡啟動Solr服務:首先進入到你解壓的Solr檔案裡的bin目錄(cd的意思是進入)
然後接著輸入啟動命令:
solr.cmd start
然後啟動成功顯示如下圖,中間等待一會就好了
開啟瀏覽器(推薦谷歌瀏覽器)在位址列輸入http://localhost:8983/(localhost指本機主機名,8983指Solr埠號,預設是8983),啟動服務成功顯示的頁面
點選左側導航的Core Admin 點選Add Core
是不是報一行紅色的錯誤呢?不要慌張,找到你解壓好的Solr檔案—>server—>solr就可以看到你新新增的core了
雙擊開啟後會發現裡面是空的,這就是報錯的原因,缺少conf檔案,這時候進入configsets—>_default檔案下把conf複製到你新新增的core裡面,注意看路徑
然後回到瀏覽器再點一次Add Core,重新整理一下就可以了(有些可能還會跳一個錯誤出來,不用理它,直接F5重新整理),這就是新新增的core
回到新新增的core目錄裡,會發現多了兩個檔案,這才是正確新增core
接下來就要修改配置檔案了,要修改的配置檔案都在conf裡面
我們需要新增中文分詞器,因為Solr作為搜尋應用伺服器,在使用過程中,不可避免的要使用中文搜尋。把中文分詞jar包加入solrconfig.xml檔案中,放在其他的<lib/>標籤後面
<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs" regex="lucene-analyzers-smartcn-\d.*\.jar" />
然後到managed-schema檔案中設定增加fieldType型別程式碼,一樣放在其他的<fieldType>型別後面
<fieldType name="text_ik_zd" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/> </analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/> </analyzer>
</fieldType>
接下來配置匯入資料的jar包,可以將資料庫的資料匯入Solr搜尋引擎,把匯入資料jar包加入solrconfig.xml中,放在其他的<lib/>標籤後面
<lib dir="${solr.install.dir:../../../..}/dist" regex="solr-dataimporthandler-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist" regex="solr-dataimporthandler-extras-\d.*\.jar" />
然後將連線資料庫的jar包放到server\solr-webapp\webapp\WEB-INF\lib目錄下,我用的是mysql資料庫
然後繼續在solrconfig.xml中加入requestHandler型別,放在其他的<requestHandler>標籤後面
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<!--datasorce config-->
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
接下來在conf裡建立data-config.xml檔案,檔名和上文的requestHandler標籤配置的str的值對應,有關聯
然後在data-config.xml檔案裡寫入下列程式碼,<dataSource/>標籤裡是資料庫連線配置,大家按照自己的配就好了,<document>標籤裡<entity>標籤包含的是要查詢的資料庫表的資料,既然要從資料庫匯入資料,就需要建立資料庫表,查詢資料庫表,兩邊配置務必相同
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test" user="root" password="root" name="productSource"/>
<document>
<entity name="product" query="SELECT pid,name,price,description FROM product " pk="pid" dataSource="productSource">
<field column="pid" name="product_id"/>
<field column="name" name="product_name"/>
<field column="price" name="product_price"/>
<field column="description" name="product_desc"/>
</entity>
</document>
</dataConfig>
所有的檔案配置完成後,回到DOS視窗,想要生效必須重啟服務:(先輸入第一條語句,-p代表停止的埠號,然後等提示完再啟動)
solr.cmd stop -p 8983
solr.cmd start
重啟成功後,瀏覽器重新整理或者重新開啟http://localhost:8983/,我們來測試一下結果,點選左側的下拉框,選擇建立好的core名字
選擇Analysis,測試中文分詞器
如果用的是Solr預設的分詞器,搜尋的結果就不友好了,會把名詞拆開查詢,效率低
如果用剛剛設定的中文分詞器(設定的名稱叫text_ik_zd),顯示的結果就很理想了,提高搜尋效率
接下來測試查詢匯入的資料庫資料,點選Schema,然後點選Add Field,name(資料庫表字段名)填的值對應data-config.xml檔案裡<field/>name的值,fieId type選name的資料型別(整數就pint,浮點數用pfloat······),資料庫表裡有多少欄位就新增多少個
新增完成後檢視新增的欄位
接下來匯入資料,選擇Dataimport,按下圖操作,兩個勾打上,選擇Entity哪個表,最下面的Auto-Refresh Status勾上,然後點選Execute執行
執行成功後顯示,匯入了3條資料
然後點選Query檢視資料,直接點選Execute Query,右側顯示資料,可以新增查詢條件進行查詢
以上就是Solr的配置使用,謝謝大家