I pushed solr-scala-client into github. This is a simple Apache Solr client for Scala wrapping SolrJ.
The basic concept of solr-scala-client is providing fluent interface and wrapping SolrJ classes by Scala collection API. This is an example to register documents into the Solr server which is working at localhost:8983.
import jp.sf.amateras.solr.scala._
val client = new SolrClient("http://localhost:8983/solr")
client
.add(Map("id"->"1", "name" -> "ThinkPad X201s"))
.add(Map("id"->"2", "name" -> "ThinkPad X220"))
.add(Map("id"->"3", "name" -> "ThinkPad X121e"))
.commit
add() takes a variable-length argument. So an example above could be rewritten as follows:
client.add(
Map("id"->"1", "name" -> "ThinkPad X201s"),
Map("id"->"2", "name" -> "ThinkPad X220"),
Map("id"->"3", "name" -> "ThinkPad X121e")
).commit
Next, see the following example to search document using the query.
// query
val result: List[Map[String, Any]] =
client.query("name:%name%")
.fields("id", "manu", "name")
.sortBy("id", Order.asc)
.getResult(Map("name" -> "ThinkPad"))
result.foreach { doc =>
println("id: " + doc("id"))
println("name: " + doc("name"))
println("--")
}
%VARNAME% in the query is replaced by given parameters as Map and the result is returned as List[Map[String, Any]].
The current version of solr-scala-client does not support facet search yet. I wish to support it in the near future. And I'm also planning about using case class to specify document or parameters instead of Map.
0 件のコメント:
コメントを投稿