前回の続き。
■インポート元などの設定
solr/conf/data-config.xml
はてなのドキュメントが少し違っていて、以下のようにdocumentノードが無いとエラーになる。
<?xml version="1.0" encoding="UTF-8" ?> <dataConfig> <dataSource name="dbname" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/dbname" user="username" password="password" batchSize="-1" useUnicode="true" characterEncoding="utf8" useOldUTF8Behavior="true" readOnly="true" /> <document name="items"> <entity name="table" dataSource="dbname" query=" SELECT `id`, `key`, `value` FROM `table` WHERE `created` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY) " deltaQuery=" SELECT `id` FROM `table` WHERE `created` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY) AND `created` > DATE_SUB('${dataimporter.last_index_time}', INTERVAL '7 9' DAY_HOUR) " deltaImportQuery=" SELECT `id`, `key`, `value` FROM `table` WHERE `id` = '${dataimporter.delta.id}' " transformer="ClobTransformer,DateFormatTransformer"> </entity> </document> </dataConfig>
solr/conf/solrconfig.xml
以下の記述を追加する。
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
エラー1
後述のURLでインポートをすると以下のようなエラーが発生する。
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:615) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:378)
以下のコマンドを実行してJDBCドライバを配置する。
wget http://www.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.22.tar.gz/from/http://cdn.mysql.com/ tar xvzf mysql-connector-java-5.1.22.tar.gz cp mysql-connector-java-5.1.22/mysql-connector-java-5.1.22-bin.jar ./lib/
■インポートの実行
以下のURLにアクセスする。
http://localhost/solr/admin/dataimport.jsp?handler=/dataimport
■差分インポートの実行
ドキュメントを見ると差分インポートの仕方もあるようなのだが、(Jetty経由で叩く?)いまいちよくわからないので、以下のようにcrontabとcurlで実行することにした。
00 * * * * curl "http://localhost/solr/dataimport?clean=false&commit=true&command=delta-import"