一、什麼是solr?
solr 是一個全文搜索工具,它是由Lucene發展而來。那麼,solr 和 Lucene 之間是什麼樣的關係呢?簡單地說,如果把solr比喻成一輛汽車,那麼Lucene就是一臺汽車引擎。絕大多數情況下我們完全可以使用solr 來解決開發中遇到的問題。
二、環境準備
確保你的機器上安裝了 java8。java8具體的安裝配置方法網上有很多,本文主要與 solr 相關,這裏就不贅述了。
這裏我使用的是7.x版本的solr
三、啓動solr進入服務頁面
啓動命令
Solr 將默認監聽 8983 端口,其中 -m 1g 指定分配給 JVM 的內存爲 1 G。
訪問此鏈接即可進入後臺
http://127.0.0.1:8983/solr/#/
接下來我們創建一個solr應用
./bin/solr create -c wenda
在solr的目錄下生成應用對應的文件夾,這個文件夾非常重要,後面我們會在該文件夾下,配置文件來實現中文檢索。
刷新服務頁面,可以看到包含了wenda的應用。
四、創建索引
第一步,需要了解 Solr 中的兩個概念: 字段(field) 和 字段類型(fieldType)。
現進入我們剛剛創建的wenda應用的conf目錄
F:\solr\server\solr\wenda\conf
打開此應用的managed-schema文件,新增如下fieldType。
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
-
解釋:
field 指定一個字段的名稱、是否索引/存儲和字段類型。後面的步驟我們會使用這個。
fieldType 指定一個字段類型的名稱以及在查詢/索引的時候可能用到的分詞插件。
第二步,因爲接下來我們使用的中文分詞,並且是從數據庫讀取內容並建立索引,需要引入相關jar包,所以還需要配置solrconfig.xml。
ext目錄是我新建的,dist目錄是solr自帶的。
<lib dir="${solr.install.dir:../../../..}/ext/" regex="ik-analyzer-solr7x.jar" />
-
<lib dir="${solr.install.dir:../../../..}/ext/" regex="mysql-connector-java-5.1.39-bin.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
第三步,重啓服務。
可以看到新的類型。
第四步,創建與數據庫表字段對應的field。
數據庫表如下。
打開wenda應用的managed-schema文件,添加如下兩個新的field。
<field name="question_title" type="text_ik" indexed="true" stored="true"/>
<field name="question_content" type="text_ik" indexed="true" stored="true"/>
可以看到我們type使用的是剛剛自己定義的text_ik。
第五步,配置數據庫文件。
我們在wenda的conf目錄下新增一個data-config.xml文件,並加入以下數據庫配置。
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/wenda"
user="root"
password="123456"/>
<document>
<entity name="question"
query="select id,title,content from question">
<field column="content" name="question_content"/>
<field column="title" name="question_title"/>
</entity>
</document>
</dataConfig>
同目錄下有solrconfig.xml文件,我們加入以下配置。
<!-- 添加mysql所需配置 -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
需要加入的jar包我們在第二步時,已經加入了。
第六步,重啓solr服務import新數據。
Solr提供了full-import和delta-import兩種導入方式。我們使用full-import模式。
第七步,使用query進行搜索。
參考: