solr功能非常強大,可以建立各種資料的索引,常見的公司專屬應用程式中,少不了資料庫的索引的建立,可以通過寫程式 可以將資料讀出100條,如果你的記憶體夠大,可以是1000條甚至更多,然後放入Collection中,批量提交至solr。或者讀取資料寫入xml檔案中,再將該檔案提交到solr等等。但是,solr也只帶了資料庫建立索引的功能,步驟如下:
一、通過solr內建的example
準備工作:
1、在apache官網下載 apache-solr-1.3.0.zip
2、下載mysql、hsql驅動(下面例子會用到)
環境描述:
1、tomcat版本 6.0.29 位置:D:/tomcat6.0.29 設定環境變數:CATALINA_HOME=D:/tomcat6.0.29
2、jdk1.5
步驟:
1、解壓縮apache-solr-1.3.0.zip copy apache-solr-1.3.0/example/solr 檔案夾到D:/tomcat6.0.29,目錄結構為D:/tomcat6.0.29/solr
2、copy apache-solr-1.3.0/dist/apache-solr-1.3.0.war到D:/tomcat6.0.29/webapps/,兵將apache-solr-1.3.0.war改為solr.war,tomcat會自動解壓縮該檔案,產生solr檔案夾,copy上面下載的mysql、hsql驅動包到D:/tomcat6.0.29/webapps/solr/WEB-INF/lib下
3、copy apache-solr-1.3.0/example/solr裡面內容到 D:/tomcat6.0.29/solr裡面--(原文第三步到這裡就結束了- 但因第四步無法繼續 所以我把下載到的apache-solr-1.3.0/example/example-DIH/solr裡的內容複寫到D:/tomcat6.0.29/solr下)
4、刪除D:/tomcat6.0.29/solr/rss,修改D:/tomcat6.0.29/sorl/solr.xml 檔案,去掉<core default="true" instanceDir="rrs" name="rrs"></core>該行
5、copy apache-solr-1.3.0/example/example-DIH內的hsqldb.zip 目錄到D:/tomcat6.0.29,解壓縮hsqldb.zip到當前檔案夾,改檔案為hsql資料庫檔案
6、到此,完成,
運行測試:
開始-運行 cmd 進入命令列,切換目錄到D:/tomcat6.0.29,輸入bin/startup.bat,啟動tomcat6,如果上面配置無誤,可以查看tomcat日誌看是否有錯誤,確定無錯後,在瀏覽器輸入http://127.0.0.1:8080/solr/db/dataimport?command=full-import,既可以看到輸出
二、測試mysql資料庫
環境和建立的檔案夾延續上面的
步驟:
1、在D:/tomcat6.0.29/solr下建立mysqltest檔案夾,copy D:/tomcat6.0.29/solr/db 裡面的內容到D:/tomcat6.0.29/solr/mysqltest
2、修改D:/tomcat6.0.29/solr/solr.xml檔案內容為
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<solr sharedLib="lib" persistent="true">
<cores adminPath="/admin/cores">
<core default="true" instanceDir="mysqltest" name="mysqltest"></core>
</cores>
</solr>
3、修改D:/tomcat6.0.29/solr/mysqltest/conf/db-data-config.xml 內容為:
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/test" user="root" password=""/>
<document name="mybook">
<entity name="book" pk="id" query="select * from book">
<field column="id" name="id" />
<field column="bookname" name="bookname" />
<field column="bookathor" name="bookathor" />
</entity>
</document>
</dataConfig>
4、因為bookname、bookathor2個欄位在D:/tomcat6.0.29/solr/mysqltest/conf/schema.xml不存在,所以,要增加著2個field
<field name="bookname" type="string" indexed="true" stored="true" required="true" />
<field name="bookathor" type="string" indexed="true" stored="true" required="true" />
注意:在該檔案有<field 的地方增加,
5、將D:/tomcat6.0.29/solr/mysqltest/conf/solrconfig.xml
中<dataDir>${solr.data.dir:./solr/db/data}</dataDir>
改為<dataDir>${solr.data.dir:./solr/mysqltest/data}</dataDir>
6、到此完成
運行測試:
開始-運行 cmd 進入命令列,切換目錄到D:/tomcat6.0.29,輸入bin/startup.bat,啟動tomcat6,如果上面配置無誤,可以查看tomcat日誌看是否有錯誤,確定無錯後,在瀏覽器輸入http://127.0.0.1:8080/solr/mysql ... command=full-import,既可以看到輸出。通過上面訪問,就建立了資料庫索引
可以訪問http://127.0.0.1:8080/solr/mysqltest/admin/,在Query String: 輸入id:搜尋內容(格式為 要搜尋的欄位:搜尋索引鍵)來測試是否已經將資料表中的資料建立了索引,也可以在該介面修改搜尋的參數
最後在說說這個功能。上面的例子只不過是很簡單的一個部分。針對solr的MultiCore,通過配置db-data-config.xml也可以實現,還有多表,或者多表關聯等等操作只要在db-data-config.xml配置清楚都可以進行資料的匯入。
在solr1.4中還有更多的擴充功能,這些功能為重建索引提供能很方便的操作。而且,datasource不單單指的是database,可以是xml檔案,還可以是來自網路上的等等。