Search code examples
scalasolrplayframework

Using Solr from Scala/ Play


How can use Solr from within Scala/ Play? Specifically how do I add/ update documents?


Solution

  • Update: see my newer answer refer https://stackoverflow.com/a/17315047/604511


    Here is code I wrote which uses Play's JSON library and Dispatch HTTP client. Its not perfect, but it should help you get started.

    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
    
    }