windows下使用solr搭建檢索服務器

一、什麼是solr?

solr 是一個全文搜索工具,它是由Lucene發展而來。那麼,solr 和 Lucene 之間是什麼樣的關係呢?簡單地說,如果把solr比喻成一輛汽車,那麼Lucene就是一臺汽車引擎。絕大多數情況下我們完全可以使用solr 來解決開發中遇到的問題。


二、環境準備

確保你的機器上安裝了 java8。java8具體的安裝配置方法網上有很多,本文主要與 solr 相關,這裏就不贅述了。

從solr的官網下載壓縮包。你可以在 http://mirrors.cnnic.cn/apache/lucene/solr/

這裏我使用的是7.x版本的solr


三、啓動solr進入服務頁面

啓動命令
  1. ./bin/solr start -m 1g

Solr 將默認監聽 8983 端口,其中 -m 1g 指定分配給 JVM 的內存爲 1 G。


訪問此鏈接即可進入後臺
  1. http://127.0.0.1:8983/solr/#/


接下來我們創建一個solr應用
  1. ./bin/solr create -c wenda


在solr的目錄下生成應用對應的文件夾,這個文件夾非常重要,後面我們會在該文件夾下,配置文件來實現中文檢索。


刷新服務頁面,可以看到包含了wenda的應用。

 
 

四、創建索引

第一步,需要了解 Solr 中的兩個概念: 字段(field) 和 字段類型(fieldType)。

現進入我們剛剛創建的wenda應用的conf目錄
  1. F:\solr\server\solr\wenda\conf

打開此應用的managed-schema文件,新增如下fieldType。
  1. <fieldType name="text_ik" class="solr.TextField">
  2. <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
  3. <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
  4. </fieldType>

解釋:
field 指定一個字段的名稱、是否索引/存儲和字段類型。後面的步驟我們會使用這個。
fieldType 指定一個字段類型的名稱以及在查詢/索引的時候可能用到的分詞插件。


第二步,因爲接下來我們使用的中文分詞,並且是從數據庫讀取內容並建立索引,需要引入相關jar包,所以還需要配置solrconfig.xml。

ext目錄是我新建的,dist目錄是solr自帶的。
  1. <lib dir="${solr.install.dir:../../../..}/ext/" regex="ik-analyzer-solr7x.jar" />
  2. <lib dir="${solr.install.dir:../../../..}/ext/" regex="mysql-connector-java-5.1.39-bin.jar" />
  3. <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />


第三步,重啓服務。
  1. ./bin/solr restart


可以看到新的類型。

 
 

第四步,創建與數據庫表字段對應的field。

數據庫表如下。

 

打開wenda應用的managed-schema文件,添加如下兩個新的field。
  1. <field name="question_title" type="text_ik" indexed="true" stored="true"/>
  2. <field name="question_content" type="text_ik" indexed="true" stored="true"/>
可以看到我們type使用的是剛剛自己定義的text_ik。


第五步,配置數據庫文件。

我們在wenda的conf目錄下新增一個data-config.xml文件,並加入以下數據庫配置。
  1. <dataConfig>
  2. <dataSource type="JdbcDataSource"
  3. driver="com.mysql.jdbc.Driver"
  4. url="jdbc:mysql://localhost/wenda"
  5. user="root"
  6. password="123456"/>
  7. <document>
  8. <entity name="question"
  9. query="select id,title,content from question">
  10. <field column="content" name="question_content"/>
  11. <field column="title" name="question_title"/>
  12. </entity>
  13. </document>
  14. </dataConfig>


同目錄下有solrconfig.xml文件,我們加入以下配置。
  1. <!-- 添加mysql所需配置 -->
  2. <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  3. <lst name="defaults">
  4. <str name="config">data-config.xml</str>
  5. </lst>
  6. </requestHandler>
需要加入的jar包我們在第二步時,已經加入了。


第六步,重啓solr服務import新數據。


 Solr提供了full-import和delta-import兩種導入方式。我們使用full-import模式。


第七步,使用query進行搜索。

 



參考:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章