使用Scala/ Play中的Solr

ttisahbt  于 2022-12-03  发布在  Solr
关注(0)|答案(3)|浏览(165)

如何在Scala/ Play中使用Solr?特别是如何添加/更新文档?

mf98qq94

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

}
laawzig2

laawzig22#

您可以考虑使用SolrJJavaLib,它使用二进制协议与Solr服务器通信,这比使用XML方式的性能更好。
将文档添加到索引的步骤如下:
http://wiki.apache.org/solr/Solrj#Adding_Data_to_Solr

jk9hmnmh

jk9hmnmh3#

与更新文档没有直接关系,但是在foursquare的工程博客文章中描述了一个很好的针对Scala中Solr的查询DSL:http://engineering.foursquare.com/2011/08/29/slashem-a-rogue-like-type-safe-scala-dsl-for-querying-solr/

相关问题