5

Scala/Play 内から Solr を使用するにはどうすればよいですか? 具体的には、ドキュメントを追加/更新するにはどうすればよいですか?

4

3 に答える 3

5

更新: 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

}
于 2012-09-22T20:46:07.977 に答える
3

バイナリプロトコルを使用してSolrサーバーと通信するSolrJJavaLibの使用を検討することをお勧めします。これは、XML方式を使用するよりもパフォーマンスが優れています。

インデックスへのドキュメントの追加は次のように行われます。

http://wiki.apache.org/solr/Solrj#Adding_Data_to_Solr

お役に立てば幸い

ポール

于 2012-09-23T19:06:02.013 に答える
1

ドキュメントの更新とは直接関係ありませんが、foursquare によってビルドされた Scala での Solr 用の優れたクエリ DSL については、エンジニアリング ブログの記事で説明されています。 -type-safe-scala-dsl-for-querying-solr/

于 2012-11-28T22:38:58.120 に答える