使用Scala/Play中的Solr

使用Scala/Play中的Solr,scala,solr,playframework,Scala,Solr,Playframework,如何在Scala/Play中使用Solr?具体如何添加/更新文档?更新:请参阅我的更新答案参考 下面是我编写的代码,它使用Play的JSON库和分派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._

如何在Scala/Play中使用Solr?具体如何添加/更新文档?

更新:请参阅我的更新答案参考


下面是我编写的代码,它使用Play的JSON库和分派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

}
包控制器
导入play.api_
导入play.api.mvc_
导入play.api.libs.json.json
导入play.api.libs.json.json.toJson
进口发货_
对象应用程序扩展控制器{
def索引=操作{
val addDocument=Json.toJson(
地图(
“添加“->
序号(
//文件
地图(
“id”->toJson(“123”),
“subject”->toJson(“您已被送达”)
)
)
))
val-toSend=Json.stringify(addDocument)
val params=Map(“提交”->“true”、“wt”->“json”)
val headers=Map(“内容类型”->“应用程序/json”)
val solr=host(“127.0.0.1”,8983)

ValeReq= SoR/SoR(/Surr)/[更新] /“JSON”

可以考虑使用SoRJ java LIB,它使用二进制协议与SoRR服务器通信,该服务器比使用XML方式更好。 将文档添加到索引的操作如下:

希望有帮助


Paul

与更新文档没有直接关系,但foursquare在其工程博客文章中描述了Solr在Scala build中的良好查询DSL:

可能重复@phadej,这是前面的问题