2012-03-02 1 views
2

clojure-solrライブラリを1.3にアップグレードしようとしています(元々は書きませんでした。 fork)、apache-solr-3.5.0とやりとりしているときに問題が発生しています。ここではgithubの上の更新ライブラリです:Clojure/Solr:Clojureのorg.apache.solr.client.solrj.impl.CommonsHttpSolrServerを使用しようとすると例外が発生する

https://github.com/antler/clojure-solr

それは基本的には必要最小限のJavaクラスをインポートして、非常に単純な一つのファイルプロジェクトです。例には、このリリースのI CDに

http://www.fightrice.com/mirrors/apache//lucene/solr/3.5.0/

/及び

java -jar start.jar 
を実行します。私はSolrの3.5.0リリース(これは一つのミラーである)がバンドルされていたSolrの例アプリに接続しようとしています

これは正常に動作するようです。その後、Clojureの-SolrのプロジェクトでREPLから(レインのDEPSを実行した後):

(use 'clojure-solr) 

(with-connection (connect "http://127.0.0.1:8983/solr") 
    (add-document! {"id" "testdoc", "name" "A Test Document"}) 
    (add-documents! [{"id" "testdoc.2", "name" "Another test"} 
        {"id" "testdoc.3", "name" "a final test"}]) 
    (commit!) 
    (search "test") 
    (search "test" :rows 2)) 

これは、もともとライブラリに与えられた例からです。細かいランを接続しますが、以下の例外を除いて追加に失敗するコール:私はSolrのドキュメントとaddメソッドでチェック

IllegalArgumentException No matching field found: add 
    for class org.apache.solr.client.solrj.impl.CommonsHttpSolrServer 

が間違いである:

http://lucene.apache.org/solr/api/org/apache/solr/client/solrj/impl/CommonsHttpSolrServer.html

私は何をしないのですここに?助けてくれてありがとう!

答えて

3

clojure-solrは、文書のベクトルをadd-documents!の配列に変換します。しかし、CommonsHttpSolrServerの配列に対する.addメソッドはありません。

ベクトルを渡すようにclojure-solrを変更すると、ベクトルがjava.util.List - つまりjava.util.Collectionを実装するため、問題が解決する可能性があります。未検証。ちょうど推測。

1

このリンクは、同様のエラーをデバッグする方法について説明します。

http://groups.google.com/group/clojure/msg/f038decc18c7da37?pli=1

それはあなたに何が悪かったのかのより良いビューを提供します。面白いと思うので、この部分を詳しく見ていきますが、そこに記載されているデバッグ方法の1つを使用することもできます。

0

どのようなものを使用してについて:

(add-documents! (list {"id" "testdoc.2", "name" "Another test"} 
        {"id" "testdoc.3", "name" "a final test"})) 

OR

(add-documents! '({"id" "testdoc.2", "name" "Another test"} 
        {"id" "testdoc.3", "name" "a final test"})) 
関連する問題