如何在Scala/ Play中使用Solr?特别是如何添加/更新文档?
mf98qq941#
更新:请参阅我的最新答案请参阅https://stackoverflow.com/a/17315047/604511
这是我写的代码,它使用了Play的JSON库和Dispatch HTTP客户端。它并不完美,但它应该能帮助你入门。
package controllers import play.api._ import play.api.mvc._ import play.api.libs.json.Json import play.api.libs.json.Json.toJson import dispatch._ object Application extends Controller { def index = Action { val addDocument = Json.toJson( Map( "add" -> Seq( //a document Map( "id" -> toJson("123"), "subject" -> toJson("you have been served") ) ) )) val toSend = Json.stringify( addDocument) val params = Map( "commit" -> "true", "wt" -> "json") val headers = Map( "Content-type" -> "application/json") val solr = host( "127.0.0.1", 8983) val req = solr / "solr" / "update" / "json" <<? params <:< headers << toSend val response = Http(req)() Ok( toSend + response.getResponseBody) //Redirect(routes.Application.tasks) } def tasks = TODO def newTask = TODO def deleteTask(id: Long) = TODO }
laawzig22#
您可以考虑使用SolrJJavaLib,它使用二进制协议与Solr服务器通信,这比使用XML方式的性能更好。将文档添加到索引的步骤如下:http://wiki.apache.org/solr/Solrj#Adding_Data_to_Solr
jk9hmnmh3#
与更新文档没有直接关系,但是在foursquare的工程博客文章中描述了一个很好的针对Scala中Solr的查询DSL:http://engineering.foursquare.com/2011/08/29/slashem-a-rogue-like-type-safe-scala-dsl-for-querying-solr/
3条答案
按热度按时间mf98qq941#
更新:请参阅我的最新答案请参阅https://stackoverflow.com/a/17315047/604511
这是我写的代码,它使用了Play的JSON库和Dispatch HTTP客户端。它并不完美,但它应该能帮助你入门。
laawzig22#
您可以考虑使用SolrJJavaLib,它使用二进制协议与Solr服务器通信,这比使用XML方式的性能更好。
将文档添加到索引的步骤如下:
http://wiki.apache.org/solr/Solrj#Adding_Data_to_Solr
jk9hmnmh3#
与更新文档没有直接关系,但是在foursquare的工程博客文章中描述了一个很好的针对Scala中Solr的查询DSL:http://engineering.foursquare.com/2011/08/29/slashem-a-rogue-like-type-safe-scala-dsl-for-querying-solr/