在這一篇將會教學如何建立 SOLR core、並且連結 MySQL 來匯入資料及查詢
SOLR 建立 core
使用 SOLR 工具來建立
由於是使用 solr 這個使用者來啟動,所以使用 su solr 的方式來建立
$ su solr -c '/opt/solr/bin/solr create -c shazi.info'
Setup new core instance directory:
/var/solr/data/shazi.info
Creating new core 'shazi.info' using command:
http://localhost:8983/solr/admin/cores?action=CREATE&name=test2&instanceDir=shazi.info
{
"responseHeader":{
"status":0,
"QTime":478},
"core":"shazi.info"}
建立好的 core data 會放在 /var/solr/data/shazi.info
SOLR 從 MySQL 匯入資料
Step.1 要從 MySQL 匯入資料首先必須先到 MySQL 官網抓 mysql connector
Step.2 取得 mysql-connector-java-5.1.37.tar.gz 後,把裡面的 mysql-connector-java-5.1.37-bin.jar 提取出來並放到 SOLR 內載入
$ tar zxvf mysql-connector-java-5.1.37.tar.gz
#把 mysql-connector-java-5.1.37-bin.jar 丟到 shazi.info 內
$ mkdir /var/solr/data/shazi.info/lib
$ mv mysql-connector-java-5.1.37/mysql-connector-java-5.1.37-bin.jar /var/solr/data/shazi.info/lib/
Step.3 把 SOLR 範例 db 匯入設定檔複製到 core conf
$ cp -r /opt/solr/example/example-DIH/solr/db/conf/ /var/solr/data/shazi.info/conf/
Step.4 設定 solrconfig.xml
確認 db config 的名稱為 db-data-config.xml,待會我們要編輯他來設定 mysql connection
加入 mysql connector lib 的位置
$ cd /var/solr/data/shazi.info/conf/
$ vim solrconfig.xml
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>
<!-- 加入以下 lib 位置 -->
<lib dir="/opt/solr/dist" regex="solr-dataimporthandler-.*\.jar" />
<lib dir="/var/solr/data/shazi.info/lib" regex=".*\.jar" />
這邊建議可以使用相對路徑以防未來移機,小弟這邊使用絕對路徑是因為分配上的潔癖。
請記住一定要加入 lib 位置確認可以抓到 mysql-connector-java-5.1.37-bin.jar,否則接下來你的設定怎麼樣都抓不到 mysql 資料,前功盡棄。
Step.5 設定 db-data-config.xml
這隻設定檔是有關於設定 MySQL 資料庫位置以及匯入的資訊
$ vim db-data-config.xml
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.10.10:3306/solr"
user="solr_USER"
password="solr_PWD" />
<document name ="shazi.info">
<entity name="item"
query="SELECT * FROM solr_tables">
<field column="id" name="id" />
<field column="typeid" name="typeid" />
<field column="body" name="body" />
<field column="name" name="name" />
</entity>
</document>
</dataConfig>
- driver = 使用 mysql 驅動:com.mysql.jdbc.Driver
- url = MYSQL 資料庫位置:jdbc:mysql://192.168.10.10:3306/solr
- user = MYSQL資料庫使用者
- password = MYSQL 資料庫密碼
資料匯入:
- 定義一個匯入項目 "item"
- 要匯入的資訊 "SELECT * FROM solr_tables"
- 定義欄位 "field",必須要定義才撈的到資料。
Step..6 在 db-data-config.xml 設定好匯入資料後,還必須定義 tables schema。
$ vim schema.xml
<?xml version="1.0" ?>
<schema name="example core zero" version="1.1">
<!-- schema type 屬性-->
<types>
<fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
</types>
<!-- schema 定義 -->
<field>
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="id" type="string" indexed="true" stored="true"/>
<field name="type" type="string" indexed="true" stored="true"/>
<field name="body" type="long" indexed="true" stored="true"/>
<field name="name" type="string" indexed="true" stored="true"/>
</field>
<!-- primary key -->
<uniqueKey>id</uniqueKey>
<!-- 無定義欄位時預設搜尋項目 -->
<defaultSearchField>name</defaultSearchField>
<!-- 空白串接使用 OR 或是 AND -->
<solrQueryParser defaultOperator="OR"/>
</schema>
上述是一個標準 schema 的寫入方式,可以按照需求加入,solr 內建還有許多 schema type 可以從範例檔抓取新增。
如果你的 Step.5 , 6 都完成後,就可以到 SOLR Cloud 進行匯入測試
到 Dataimport 選好 Entity 為剛剛建立的 "item",然後執行匯入"Exexute"
執行後 SOLR 不會自動更新狀態(不貼心),必須手動執行 "Refresh Status" 就可以看到匯入成功,並且有多少筆匯入成功
既然匯入成功了我們就到 Query 來驗證一下匯入的資料是否正確,有找到資料就代表匯入完成囉!!
現在支援 json、python、csv、xml、php、ruby,對於前端已經越來越友善了
Orignal From: Solr 全文檢索引擎,簡單擁有搜尋引擎 – Round 2 建立 core 從資料庫匯入
沒有留言:
張貼留言