2011-09-27 49 views

回答

1

請在你喜歡的腳本語言的腳本(Python的對我來說)。我做了一些與數據庫類似的事情,並希望類似的解決方案能夠順利地順利完成。

使用Python:

  1. 的urllib2可以獲取你的網頁的正文,給出的URL。
  2. 使用XML解析器像etree遞歸下降下來的樹,並將其轉換成您選擇的XML/JSON的層次結構(如你喜歡)
  3. 它上傳到Solr(Solr的允許上傳的XML,JSON,CSV等等)。

並像cron-job一樣定期運行此腳本。


您需要兩段代碼:一段查詢您的RESTful服務並獲取響應的主體;另一個將格式化的文檔上傳到Solr。

這段代碼上傳Python對象request_obj給定request_url和Solr的響應被返回作爲Python對象。本地Python對象(由字典(關聯數組),列表,字符串,數字組成)很容易翻譯成JSON(1-2個警告)。

僅將此用作參考。我保證沒有適合你的目的。

不要忘記使用/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. 配置您的索引架構爲您想索引的字段。根據上面的例子,你會希望字段爲classname,packagename和url。有關更多詳細信息,請參見SolrSchema
  2. 將文檔添加到您的索引。有關如何執行此操作的詳細信息,請參閱以下內容之一。