Solr 教學 (5) – 建立新的 Core
這篇文章小蛙要記錄怎麼樣新建一個 Core 並且也加入 DataImportHandler 的方法。
其他相關 Solr 系列文章請參考:
Solr 教學 (1) – 安裝篇
Solr 教學 (2) – tomcat 7 以帳號密碼限制存取頁面
Solr 教學 (3) – 以 Remote Address Filter 限制存取
Solr 教學 (4) – 使用 DataImport 匯入資料庫資料
上一篇記錄了怎麼透過 DataImportHandler 來將 MySQL 的資料匯入到 Solr 中,剛詢問了同事,一個 Core 可以大概看成資料庫中的一個 table,所以要匯入兩個不相關的 table 要用兩個 Core,雖然網路上好像有人提到可以將兩個不相干的 table 匯入到一個 Core 中,不過小蛙的 table 不多,就用簡單的做法就好。
小蛙的 index 環境是在 /opt/solr/example,最快的方法是直接把 example 資料夾複製一個新的並且改名字,這邊小蛙想要有一個 news 的 core, 使用自己建立必要資料夾的方法,建立以下資料夾
/opt/solr/news/ /opt/solr/news/conf /opt/solr/news/data
再將原本 /opt/solr/example/conf/ 下的 db-data-config.xml, schema.xml, solrconfig.xml 這三個檔案複製到 /opt/solr/news/conf/ 目錄中。
接著修改 /opt/solr/solr.xml,加入新的 core
1
2
3
4
5
6
7
8
|
<? xml version = "1.0" encoding = "UTF-8" ?> < solr persistent = "true" > < cores adminPath = "/admin/cores" > < core name = "example" instanceDir = "example" /> < core name = "News" instanceDir = "news" /> ... </ cores > </ solr > |
重新啟動 tomcat。小蛙在這邊就遇到很多錯誤,因為資料夾是用 root 權限建立的,而 solr 並沒有這樣的權限可以存取,所以這邊要注意把 /opt/solr/news 下的檔案擁有權都改成 tomcat7 (看 tomcat user 叫什麼就改成那個)。
第二個要注意的事情是一切正常運作後,點選到 DataImport 頁面開始運行時,卻出現下面的錯誤
1
2
3
4
|
org.apache.solr.handler.dataimport.DataImportHandlerException: Unable to execute query: select * from news Processing Document # 1 ... Caused by: java.sql.SQLException: Illegal value for setFetchSize(). ... |
參考資料 1,2 中提到在 db-data-config.xml 中的 <dataSource 加上 batchSize=”-1″ 就可以解決這個問題囉!
Solr 系列文章:
- Solr 教學 (1) – 安裝篇
- Solr 教學 (2) – tomcat 7 以帳號密碼限制存取頁面
- Solr 教學 (3) – 以 Remote Address Filter 限制存取
- Solr 教學 (4) – 使用 DataImport 匯入資料庫資料
- Solr 教學 (5) – 建立新的 Core