将rest web服务的xml输出索引到solr服务器中

将rest web服务的xml输出索引到solr服务器中,xml,solr,Xml,Solr,如何使用webservice的内容为solr服务器编制索引 我的webservice输出如下所示 现在,我想用xml下的内容为solr服务器编制索引,如上图所示 如何将其索引到apache solr中。您需要大致按照以下步骤为数据编制索引 为要索引的字段配置索引架构。根据上面的示例,您需要classname、packagename和url字段。有关更多详细信息,请参阅 将文档添加到索引中。有关如何执行此操作的详细信息,请参见以下内容之一。 -使用XML/HTTP数据源 用你最喜欢的脚本语

如何使用webservice的内容为solr服务器编制索引

我的webservice输出如下所示

现在,我想用xml下的内容为solr服务器编制索引,如上图所示


如何将其索引到apache solr中。

您需要大致按照以下步骤为数据编制索引

  • 为要索引的字段配置索引架构。根据上面的示例,您需要classname、packagename和url字段。有关更多详细信息,请参阅
  • 将文档添加到索引中。有关如何执行此操作的详细信息,请参见以下内容之一。
    • -使用XML/HTTP数据源

  • 用你最喜欢的脚本语言(Python for me)编写一个脚本。我对数据库做了类似的工作,希望类似的解决方案也能为您带来好处

    使用Python:

  • urllib2可以获取给定URL的网页正文
  • 使用像etree这样的XML解析器递归地向下遍历树,并将其转换为您选择的XML/JSON层次结构(如您所愿)
  • 上传到Solr(Solr允许上传XML、JSON、CSV等格式) 并像cron作业一样定期运行此脚本


    您将需要两段代码:一段用于查询RESTful服务并获取响应主体;另一个是将格式化文档上载到Solr

    这段代码将Python对象request\u obj上传到给定的request\u url,并将solr的响应作为Python对象返回。本机Python对象(由字典(关联数组)、列表、字符串和数字组成)可以轻松地转换为JSON(有1-2条注意事项)

    仅用作参考。我保证不适合你的目的

    别忘了使用Solr 3.3以后提供的/update/json?wt=python。您需要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,请使用这些优秀的教程和

    这是一个命令行示例

    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
    
    从xml.etree导入ElementTree作为ET
    elem=ET.fromstring(“这是一个块

    这是另一个块

    ”) 对于元素中的子元素: ... 打印subelement.text ... 这是一个街区 这是另一个街区
    用一些代码更新了我的答案。记住,谷歌是你的朋友。