Solr - 如何获取特定格式的搜索结果

2024-03-19

在探索示例时索引维基百科数据 http://wiki.apache.org/solr/DataImportHandler#Example%3a_Indexing_wikipedia在Solr中,我们如何才能得到预期的结果(即与导入的数据相同)?

是否有任何过程可以通过配置而不是通过组查询来实现它,因为我的数据有很多内部标签。

我探索了 xslt 结果转换,但我正在寻找 json 响应。

导入文档:

<page>
<title>AccessibleComputing</title>
    <ns>0</ns>
    <id>10</id>
    <redirect title="Computer accessibility" />
    <revision>
    <id>381202555</id>
    <parentid>381200179</parentid>
    <timestamp>2010-08-26T22:38:36Z</timestamp>
    <contributor>
         <username>OlEnglish</username>
         <id>7181920</id>
    </contributor>
</revision>
</page>

solrConfig.xml:

<dataConfig>
        <dataSource type="FileDataSource" encoding="UTF-8" />
        <document>
        <entity name="page"
                processor="XPathEntityProcessor"
                stream="true"
                forEach="/mediawiki/page/"
                url="data/enwiki-20130102-pages-articles.xml"
                transformer="RegexTransformer,DateFormatTransformer"
                >
            <field column="id"        xpath="/mediawiki/page/id" />
            <field column="title"     xpath="/mediawiki/page/title" />
            <field column="revision"  xpath="/mediawiki/page/revision/id" />
            <field column="user"      xpath="/mediawiki/page/revision/contributor/username" />
            <field column="userId"    xpath="/mediawiki/page/revision/contributor/id" />
            <field column="text"      xpath="/mediawiki/page/revision/text" />
            <field column="timestamp" xpath="/mediawiki/page/revision/timestamp" dateTimeFormat="yyyy-MM-dd'T'hh:mm:ss'Z'" />
            <field column="$skipDoc"  regex="^#REDIRECT .*" replaceWith="true" sourceColName="text"/>
       </entity>
       </document>
</dataConfig>

solr 查询响应:

  "response": {
    "numFound": 1,
    "start": 0,
    "docs": [
      {
        "id": "10",
        "timestamp": "2010-08-26T17:08:36Z",
        "revision": 381202555,
        "titleText": "AccessibleComputing",
        "userId": 7181920,
        "user": "OlEnglish"
      }
    ]
  }

预期回应:

"response": {
    "numFound": 1,
    "start": 0,
    "docs": [
      {
        "id": "10",
        "timestamp": "2010-08-26T17:08:36Z",
        "revision": 381202555,
        "titleText": "AccessibleComputing",
        "contributor": [{
            "userId": 7181920,
            "user": "OlEnglish"
        }]
      }
    ]
  }

如果您不喜欢使用的想法XsltResponseWriter http://wiki.apache.org/solr/XsltResponseWriter(这也可以帮助 int 以 JSON 形式输出结果),您可以创建自己的SearchComponent,这将修改输出。当您使用自定义SearchComponent您可以将不同的 ResponseWriter 应用于输出(xml、json、csv、xslt 等)。

您可以学习如何创建自定义SearchComponent in 本文 http://sujitpal.blogspot.ru/2011/04/custom-solr-search-components-2-dev.html, 例如。

To use XsltResponseWriter,将此代码添加到solrconfig.xml:

<queryResponseWriter name="xslt" class="org.apache.solr.response.XSLTResponseWriter"/>

Add a json.xsl文件至conf/xslt文件夹,其中包含 XML 输出的转换规则(当您使用wt=xml在你的查询中),像这样:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:strip-space elements="*"/>
  <xsl:output method="text" indent="no" media-type="application/json"/>

  <xsl:template match="result">
    <xsl:text>{"response":{"docs":[</xsl:text>
    <xsl:apply-templates select="doc"/>
    <xsl:text>]}}</xsl:text>
  </xsl:template>

  <xsl:template match="doc">
    <xsl:if test="position() &gt; 1">
      <xsl:text>,</xsl:text>
    </xsl:if>
    <xsl:text>{"contributor": [{"userId": </xsl:text><xsl:value-of select="userId"/><xsl:text>, "user": "</xsl:text><xsl:value-of select="user"/><xsl:text>"}]}</xsl:text>
  </xsl:template>

</xsl:stylesheet>

然后您可以使用如下 url 来获取此响应:

http://localhost:8983/solr/select/?q=id:10&wt=xslt&tr=json.xsl
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Solr - 如何获取特定格式的搜索结果 的相关文章

随机推荐

  • 在 iPhone 重启时启动 iOS BLE Central 应用程序

    我计划使用 CoreBluetooth 框架开发一个 iOS 应用程序 该应用程序可以连续监控计步器外围设备并计算脚步数 我知道 如果后台执行模式设置为 BLE Central 应用程序即使在后台也将继续接收 BLE 事件 Apple 文档
  • SQL存储过程检查表中的值是/否并执行sql

    检查table1中value是否 Y 然后立即执行sql select if select value1 from table1 where value desc Indicator and value1 Y then execute im
  • Elasticsearch 连接超时

    from datetime import datetime from elasticsearch import Elasticsearch es Elasticsearch doc author kimchy text Elasticsea
  • 如何从 TinyDB 数据库中检索单个值?

    我正在学习如何在 Python 上使用 TinyDB 并且我已经掌握了基础知识 添加 删除 更新等 但现在我正在尝试从数据库中检索特定值 我正在使用的代码在这个方法中 def showpassword show userdb get whe
  • 在 Go 中模拟 HTTPS 响应

    我正在尝试为向 Web 服务发出请求的包编写测试 我遇到问题可能是由于我对 TLS 缺乏了解 目前我的测试看起来像这样 func TestSimple server httptest NewServer http HandlerFunc f
  • 原则 2 中的动态表/实体名称

    我希望有人能够阐明我的代码发生了什么 我需要一个实体来表示通用表 作为具有 X id 后缀的表的模型 例如 我有一个实体 CustomerX 我需要查询的表是 cusotmer 1 customer 2 customer 3 等 我目前正在
  • select unique * 查询有多贵

    在sql server 2012中 我有一个包含超过2500万行且有重复项的表 该表没有唯一索引 它只有一个非聚集索引 我想消除重复项 所以我想到了以下内容 select distinct into temp table from prim
  • Angular CLI 在 ng 服务上偶尔会冻结计算机

    我有问题ng serve 当我在我的 Angular 项目上运行它时 大约 10 的时间 它会在此过程中冻结 并且整个计算机也会冻结 有时它会在一段时间 从20秒到120秒 后解冻并成功编译 有时我需要手动关闭计算机电源 我已经在 2 台计
  • 在 CSS 中应该使用 rgba(0, 0, 0, 0) 还是 rgba(255, 255, 255, 0) 来实现透明度?

    你应该使用rgba 0 0 0 0 or rgba 255 255 255 0 CSS 的透明度 各自的优点和缺点是什么 最后一个参数为rgba 函数是 alpha 或 opacity 参数 如果您将其设置为0它将意味着 完全透明 前三个参
  • 将datagridview导出到word文档c#

    我正在尝试将数据网格导出到Word文档 但不是这个结果 EmployeeID EmployeeName Birth Phone Address DateOfHiring Salary EmloyeeType 1 name 1 11 test
  • Mandrill 通过 Laravel / PHP 入站电子邮件

    我想知道是否有人可以帮助我解决我在研究 Laravel 和通过 Mandrill 入站电子邮件处理相关问题时遇到的一些问题 基本上我希望能够通过 Mandrill 接收电子邮件并将它们存储在我的 Laravel 数据库中 现在我不确定我是否
  • 将闪亮的小部件显示与特定的导航栏 tabPanel() 选择连接起来

    我有一个闪亮的仪表板 其中有一个导航栏页面 其中包含两个 tabPanel Summary and Available Funds Then Available Funds 由一个tabsetPanel 有两个选项卡面板 Plot and
  • Android蓝牙UUID连接APP到ANDROID

    我正在构建一个 Android 应用程序 用于跟踪设备上的蓝牙连接 并在超出范围时触发警报 Android 文档要求提供 UUID 才能建立连接 uuid 是用于唯一标识信息的字符串 ID 的通用唯一标识符 UUID 标准化 128 位格式
  • 如何在多个显示器上正确使用 SetDisplayConfig?

    我正在创建一个小程序 它将包含桌面中的所有显示器 扩展模式 或禁用所有辅助显示器 显示器可以连接到 GPU 和集成显卡 该程序适用于Windows 7 因此根据互联网上的信息 我决定使用CCD API 但遇到了SetDisplayConfi
  • 带有空 RHS 的“dcast”[重复]

    这个问题在这里已经有答案了 有没有办法在不首先指定要翻转的变量的情况下翻转我的数据 在我看来 逻辑默认值似乎是组内索引 例如 DT lt data table id rep 6 10 each 3 var rnorm 15 DT id va
  • TypeScript:如何从类型中提取泛型参数?

    假设我有这样的类型React ComponentClass
  • JComboBox 填充枚举变量值

    我有一个JComboBox我用这种方式制作的enum其价值观 JComboBox
  • migrate.exe 忽略绑定重定向

    我正在尝试运行migrate exe申请来自EntityFramework在特定的 DLL 上 该DLL引用了Microsoft Azure KeyVault WebKeynuget 包 当我尝试运行命令时 migrate MyProjec
  • 使用 .htaccess 动态 URL 重写

    我对 htaccess 重写还很陌生 我正在尝试创建规则来动态重写 URL 例如 假设用户输入以下 URL http example com xxx user 2002 它将被重写为 http example com xxx user 20
  • Solr - 如何获取特定格式的搜索结果

    在探索示例时索引维基百科数据 http wiki apache org solr DataImportHandler Example 3a Indexing wikipedia在Solr中 我们如何才能得到预期的结果 即与导入的数据相同 是