2011-09-27 7 views
1

どのようにWebサービスの内容でsolrサーバーのインデックスを作成できますか。インデックスxml残りのWebサービスをsolrサーバーに出力

私のWebサービス出力することができます私は、インデックスは、Apache Solrのにthiss方法

上に示したように、今私は、インデックスにxmlの下のコンテンツserverwithのSolrをしたい、この enter image description here

のように見えます。

答えて

1

お気に入りのスクリプト言語(私のためのPython)でスクリプトを作成します。私はデータベースと似たようなことをして、同様のソリューションがうまくいくことを願っています。 Pythonのでは

  1. urllib2のはURL与えられた、Webページの本文を取得することができます。
  2. ツリーを再帰的に下降させ、選択したXML/JSON階層に変換する(好きなように)
  3. Solrにアップロードする(SolrはXML、JSON、CSV等)。

このスクリプトは、定期的にcron-jobのように実行してください。


2つのコードが必要です.1つはRESTfulサービスを照会し、応答の本体を取得するコードです。もう一方は、書式設定された文書をSolrにアップロードします。

コードのこの部分は、所与のrequest_urlにPythonのオブジェクトrequest_objをアップロードし、Solrの応答は、Pythonオブジェクトとして返されます。ネイティブのPythonオブジェクト(辞書(連想配列)、リスト、文字列、数字で構成される)はJSONに簡単に変換されます。

参考としてのみ使用してください。私はあなたの目的に合った妥当性を保証しません。

/update/json?wt = pythonは、Solr 3.3以降で使用できません。 MultipartPostHandlerライブラリが必要です。解析(および構成)として

def solr_interface(self,request_url,request_obj): 
    request=json.dumps(request_obj,indent=4,encoding="cp1252") 
    opener = urllib2.build_opener(MultipartPostHandler.MultipartPostHandler) 
    urllib2.install_opener(opener) 
    req = urllib2.Request(request_url, request) 
    req.add_header("Content-Type", "application/json") 
    text_response = urllib2.urlopen(req).read().strip() 
    return ast.literal_eval(text_response) 

PythonでXML、これはコマンドラインサンプルでhttp://www.learningpython.com/2008/05/07/elegant-xml-parsing-using-the-elementtree-module/http://effbot.org/zone/element.htm

これらの優れたチュートリアルを使用します。

from xml.etree import ElementTree as ET 
elem =ET.fromstring("<doc><p>This is a block</p><p>This is another block</p></doc>") 
for subelement in elem: 
...  print subelement.text 
... 
This is a block 
This is another block 
+0

簡単に同じコードを提供できます – pavan

+0

私の答えはいくつかのコードで更新されました。と覚えておいてください、Googleはあなたの友人です。 – aitchnyu

1

データのインデックスを作成するには、次の手順に従います。

  1. インデックスを作成するフィールドのインデックススキーマを構成します。上記の例に基づいて、クラス名、パッケージ名、およびURLのフィールドが必要です。詳細はSolrSchemaを参照してください。
  2. 文書をインデックスに追加します。これを行う方法の詳細については、次のいずれかを参照してください。
関連する問題