solr從數據庫導入數據的例子

Solr是一個獨立的企業級搜索應用伺服器,它對外提供類似于Web-service的API接口。用戶可以通過http請求,向搜索引擎伺服器提交一定格式的XML文件,下面我們就一起來看一篇簡單的solr從數據庫導入數據的例子

1. 先在本地的solr_db庫下建一張solr_tb表(字段:id,name,price,desc),添加了5條數據,如下圖。

建立數據表

2. 還記得上篇中安裝solr的目錄結構嗎?打開D:\phpServer\solr\solr1\home\collection1\conf目錄,暫且稱這個目錄爲“配置文件目錄”了。打開配置文件目錄下的solrconfig.xml文件,在此文件的<config></config>標簽之間的任一地方(最好是前面)添加如下代碼:
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

配置dataimport

3. 在當前目錄下新建一個名爲data-config.xml的文件,在文件中添加如下配置信息,此信息爲你要連接的mysql庫的信息,請如實填寫(數據庫爲solr_db,數據表爲solr_tb)。
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1/solr_db"
user="root"
password="root" />
<document>
<entity name="solr_tb" transformer="DateFormatTransformer"
query="select id,name FROM solr_tb where id >= ${dataimporter.request.id}">
</entity>
</document>
</dataConfig>

4. 找到同級目錄下面的schema.xml(字段配置)文件,先將此文件備份一下,然後打開schema.xml,全選->刪除,再將下面這段粘貼到schema.xml文件中。因爲我們暫時用不到那麽多參數,所以爲了便于初學和理解,簡化了一下。
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="example" version="1.5">
<!-- 要建立的索引,_version_這個不能省略 -->
<fields>
<field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
<field name="name" type="text_general" indexed="true" stored="true" />
<field name="_version_" type="long" indexed="true" stored="true"/>
</fields>
<!-- 字段類型,配置上面字段<field>中出現的類型即可 -->
<types>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
<!-- text_general能對中文分詞 -->
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
</types>
<!-- 唯一字段 -->
<uniqueKey>id</uniqueKey>
<!-- 設置默認查詢字段,設置此處爲name後,還要在solrconfig.xml中設置name="/select"中爲<str name="df">name</str>。-->
<defaultSearchField>name</defaultSearchField>
<!-- 查詢轉換模式,是並且還是或者(and/or) -->
<solrQueryParser defaultOperator="OR"/>
</schema>

說明一下:“<fields>”標簽,就是配置你要建立索引的字段。我現在需要建立id,name兩個字段,
即 <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/> 和 <field name="name" type="text_general" indexed="true" stored="true" /> 也就是對應第3步中select id,name FROM solr_tb這裏的字段。了解一下fields標簽。

5.在D:\phpServer\solr\dist目錄中複制solr-dataimporthandler-4.7.0.jar、solr-dataimporthandler-extras-4.7.0.jar和mysql-connector-java-5.1.7-bin.jar(這個沒有?點擊下載)複制到D:\phpServer\solr\solr1\tomcat\webapps\solr\WEB-INF\lib目錄中。

6.重啓tomcat服務,訪問http://localhost:8080/solr/,在左側的菜單中的下拉選擇collection1,然後再載入的菜單中選擇Dataimport選項,是不是已經出現了如下圖所示的界面呢。如果出現則表示成功了。接著按如下圖的指示,現在開始導入數據吧!


solr從數據庫導入數據的例子

注:Custom Parameters 參數是第3步select語句中的id >= ${dataimporter.request.id},這裏填id=1,即從id爲1的數據開始導入,這樣對于數據較大的表,可以控制分成幾步導入。


Clean選項表示是否刪除未匹配到的數據,也就是在數據庫select結果中沒有,而solr索引庫中存在的時候,則刪除。

8.出現如下圖所示的界面則表示導入成功了。


solr從數據庫導入數據的例子

9.現在點擊左側的Query切換到查詢頁面,查看一下吧。


solr從數據庫導入數據的例子


solr從數據庫導入數據的例子

更多相關文章
  • 朋友申請了一個免費的 mysql 數據庫空間做測試,今天上午就把數據庫導入試試,反正導了幾次都出錯:40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET朋友申請了一個
  • 文章介紹MySql 數據庫導入Unknown command \\n.錯誤解決辦法 ,有需要的朋友可以參考一下. 在CMD 下 輸入: Mysql -u root -p --default-character-set
  • 本文章給各位同學介紹一些常用的在使用oracle 11g linux 建立表空間 用戶授權 數據庫導入導出語句,有需要了解的同學可進入參考.sqlplus/as sysdba-- 查看dbf存放位置 select *
  • 本文章小編是整理了兩段不同的代碼可以實現數據庫導出或導出成sql文件了,下面一起來看看,大家複制保存在指定文件即可.php實現數據庫備份導出成sql1. 首先要得到該數據庫中有哪些表,所用函數 mysql_list_tables(),然後可以將獲取的所有表名存到一個數組.2. show create
  • REDIS數據庫是一個不錯的數據庫了它的存儲與查詢比mysql都有不小的優勢了,在此小編今天來爲各位介紹一下REDIS數據庫中批量刪除KEY例子,如果各位不了解的可以和小編來看看吧.Redis server went
  • 本文章來給各位同學介紹MySql數據庫AdoDB函數實例詳解,這裏除了像php直接連接mysql外,我們還可以使用adodb來操作數據庫哦.1.GetAll方法我們可以使用GetAll方法代替Execute()方法,該方法返回的結果爲一個二維關聯數據,這樣可以使用foreach或for循環語句處理, ...
  • 下面一起來看個在學習環境下的xampp開啓xampp Mysql數據庫等的遠程訪問例子 ,希望例子對各位同學會有所幫助.在訪問XAMPP所建立的Mysql數據庫時,若出現New XAMPP security conc
  • 這個Yii 導入excel文件的例子其實就是把excel文件的內容讀取出來然後顯示了,這個不是導入到mysql數據庫了.public function Getexcel($file){ $file=$_FILES['
一周排行