Solrを使ってみる、その2
Solrを使ってみる、その1の続きである。前回でSolrが動作することはわかった。これはいわば、GUI付のデータベースシステムのようなイメージだ。
データベースシステムであるから、当然だが手作業ではなく、クライアントであるアプリからデータの登録とその検索ができるはずだ。これをJavaプログラムから行ってみる。
Solr上にデータベースを作る
あらかじめSolr上にデータベースを作成しておく。ちなみにこの操作はSolrが動作していなくても可能のようだ。
solr create -c bigboxstore
クライアントライブラリを入れる
gradleに以下の依存を追加する。
dependencies {
compile group: 'org.apache.solr', name: 'solr-solrj', version: '8.1.1'
}
データを投入する
データを投入してみる。
package solrtest;
import org.apache.solr.client.solrj.impl.*;
import org.apache.solr.common.*;
public class Main {
public static void main(String[]args) throws Exception {
register();
}
static void register() throws Exception {
String urlString = "http://localhost:8983/solr/bigboxstore";
HttpSolrClient solr = new HttpSolrClient.Builder(urlString).build();
solr.setParser(new XMLResponseParser());
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "123456");
document.addField("name", "Kenmore Dishwasher");
document.addField("price", "599.99");
solr.add(document);
solr.commit();
}
}
この時点で管理画面での検索を行うと、たしかにデータが入っている。
検索する
次に検索してみる。
public static void main(String[]args) throws Exception {
search();
}
static void search() throws Exception {
String urlString = "http://localhost:8983/solr/bigboxstore";
HttpSolrClient solr = new HttpSolrClient.Builder(urlString).build();
solr.setParser(new XMLResponseParser());
SolrQuery query = new SolrQuery();
query.set("q", "price:599.99");
QueryResponse response = solr.query(query);
SolrDocumentList docList = response.getResults();
System.out.println("found " + docList.getNumFound());
for (SolrDocument doc : docList) {
System.out.println("id " + doc.getFieldValue("id"));
System.out.println("price " + doc.getFieldValue("price"));
}
}
たしかに見つかった。
found 1
id 123456
price 599.99
参考
以下を全面的に参考にさせていただいた。
他の参考としては以下がある。