2012-01-18 8 views
0

SOLR(see here)には多くの独立したPythonバインディングがあります。どのモジュールがJythonで利用可能か(つまり、Cモジュールとは対照的に純粋なPythonで実装されています)、どちらをお勧めしますか?SOLR用のJythonバインディング

は、私は、Python(CPythonと)からとスカラ座(JVM)からSOLRを使用も Solr: best documented, easy to use, stable Python APIs(これまでに多くの有用な応答を取得していない)

+0

JythonのSolr Javaクラスを使用できませんか? – mzjn

+0

もちろん、私はPythonでプログラミングする方が好きです。私はちょうどTomcatでmod_pythonなどとは対照的にTomcatが既に存在しているので、それを実行したいと思います。それ以外の場合はJavaで行うことができます。 – user323094

答えて

3

を参照してください。どちらの場合も、私は同じAPI、すなわちHTTPクライアントを使用します。言い換えれば、http://www.example.com:8080/solr/datacore/select?q=DocIDのようなURL:* & fl = DocID、Descr

URLは合成によって構築されます。クエリには、キーとしてフィールド名を含むdictがあり、値として一致します。たとえば、上記のクエリは{"DocID": "*"}のようになります。この辞書は、各キー間でANDで結合されています。実際には、値は使用して参加GETまたは

DocType:Book OR Paper OR Letter AND Length:[0 TO 200000] 

組成物はそれぞれの方法は、自己を返す単純なオブジェクトで行われているようなので、

{"DocType": ["Book","Paper",Letter"], "Length": ["[0 TO 200000]"]} 

のようなより複雑なクエリがSOLRクエリに変わるだろうリストです例えば:

def onlybooks(self): 
    self.querydict["DocType"] = "Book" 
    return self 

これはその後のようなメソッドチェーンで使用されます

これ以上のものは、あまりにも多すぎるもので、わかりにくい図書館で何が起こっているのかを、そのコードを勉強することなく理解できないほど多く隠してしまいます。 SOLRのクエリ言語のすべての機能とそれを効果的に使用する方法を理解するだけでは大変です。クエリーURLを構築するためのいくつかのヘルパーメソッドを書くのに約1ページのコードしか必要ないときは、あなたとSOLRの間にライブラリを置かないでください。

ところで、ライブラリを使用していて機能するためにSOLRスキーマが必要な場合は、SOLRスキーマをアプリケーションに含めないでください。アプリのサーバーから直接取得し、ローカルにキャッシュします。

+0

詳細な回答ありがとうございます。私はあなたのポイントと、言語とバインディングに依存しないHTTP構文を学ぶことの利点を見ています。受け入れられた答えを選ぶことに関して、私はいくつかの答えを得ると思ったので、私は複数の視点を考慮することができます。だから私は今この特定の答えを受け入れるべきかどうか、またはいくつかのより多くの意見を待つべきかどうか分からない。 – user323094

関連する問題