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
参考
以下を全面的に参考にさせていただいた。
他の参考としては以下がある。





ディスカッション
コメント一覧
まだ、コメントがありません