solr-scala-client 0.0.8をリリースしました

SolrJをラップしたScala用のSolrクライアントsolr-scala-client 0.0.8をリリースしました。
https://github.com/takezoe/solr-scala-client
今回のバージョンでの変更点は以下の通りです。

特にノンブロッキングAPIの追加が大きな新機能です。本当はSolrJ側でノンブロッキングAPIが実装されてから対応すればいいやと思っていたのですが、実装される気配がないので自作することにしました。
ブロッキング版のSolrClientとほぼ同じメソッドを実装していますが、結果の代わりにFutureが返ってくるインターフェースになっています。簡単な例だとこんな感じ。

val client = new AsyncSolrClient("http://localhost:8983/solr")

// Register
client
  .register(Map("id" -> "005", "name" -> "ThinkPad X1 Carbon", "manu" -> "Lenovo"))
  .onComplete{
    case Success(x) => println("registered!")
    case Failure(t) => t.printStackTrace()
  }

// Query
client.query("name:%name%")
  .fields("id", "manu", "name")
  .facetFields("manu")
  .sortBy("id", Order.asc)
  .getResultAsMap(Map("name" -> "ThinkPad X201s"))
  .onComplete {
    case Success(x) => println(x)
    case Failure(t) => t.printStackTrace()
  }

内部ではAsyncHttpClientというJavaベースのノンブロッキングHTTPクライアントライブラリを使用しています。Apache HttpComponentsでもノンブロッキングAPIが実装されているのですが、SolrJが内部で使用しているHttpComponentsとバージョンがあわなかったため、AsyncHttpClientを使うことにしました。