【问题标题】:Solr Data Import Handler for Html用于 Html 的 Solr 数据导入处理程序
【发布时间】:2019-11-21 18:28:41
【问题描述】:

TLDR

如何配置 solr 数据导入处理程序,使其能够导入类似于 solr 的“post”实用程序的 html?

上下文

我们正在做一个小项目,其中代码会将一组页面从 wiki/confluence 导出到“直接 html”(为了在 DR 数据中心中的可用性——直接 html 页面将不依赖于数据库等)

我们要在 solr 中索引 html 页面。

我们使用 solr 提供的“post 实用程序”“让它工作”

post -c OPERATIONS -recursive -0 -host solr $(find . -name '*.html')

这很好.....但是,我们想利用数据导入处理程序 (DIH),即用对 DIH 端点的单个 http 调用替换 shell 命令 ('/数据导入')

问题

如何配置 tika “data config xml”文件以获得与 solr “post 命令”“相似的功能”?

  • 当我使用 data-config.xml 进行配置时,solr 文档仅以“id”和“version”字段结尾(即其中 id 是未标记的文件名)

更正:我原来写的是'"id" and "title" field..."'

        "id":"database_operations_2019.html",
        "_version_":1650836000296927232},
  • 但是,当我使用“bin/post”时,文档具有这些字段,即包括标记化的标题:
"id":"/usr/local/html/OPERATIONS_2019_1119_1500/./database_operations_2019.html",
        "stream_size":[54115],
        "x_parsed_by":["org.apache.tika.parser.DefaultParser",
          "org.apache.tika.parser.html.HtmlParser"],
        "stream_content_type":["text/html"],
        "dc_title":["Database Operations 2019 Guidebook"],
        "content_encoding":["UTF-8"],
        "content_type_hint":["text/html; charset=UTF-8"],
        "resourcename":["/usr/local/html/OPERATIONS_2019_1119_1500/./database_operations_2019.html"],
        "title":["Database Operations 2019 Guidebook"],
        "content_type":["text/html; charset=UTF-8"],
        "_version_":1650834641083432960},

几点

  • 我尝试过 RTM,但不遵循“字段”如何映射到“html 正文”
  • 解析一个目录-full-ofHTML 大约是 1999 年的问题,所以我不希望有很多人
  • 我查看了 SimplePostTool.java(bin/post 的实现)...没有真正的答案。

数据配置 Xml 文件

<dataConfig>
  <dataSource type="BinFileDataSource"/>
  <document>
    <entity name="file" processor="FileListEntityProcessor"
        dataSource="null"
        htmlMapper="true"
        format="html"
            baseDir="/usr/local/var/www/confluence/OPERATIONS"
        fileName=".*html"
            rootEntity="false">

      <field column="file" name="id"/>

      <entity name="html" processor="TikaEntityProcessor"
              url="${file.fileAbsolutePath}" format="text">

        <field column="title" name="title" meta="true"/>
        <field column="dc:format" name="format" meta="true"/>

        <field column="text" name="text"/>

      </entity>

    </entity>
  </document>
</dataConfig>

【问题讨论】:

  • 你真的得到了你的例子中的标题吗?你写的是你做的,但它不包括在内 - 文件名是id 字段(它应该是一个原始字符串,而不是一个标记化的文本字符串)。您还可以在配置中使用 LogTransformer 来获取数据导入处理程序的扩展日志记录。
  • 我的错误。我的意思是“id 和版本”..我已经更新了原来的问题。

标签: solr dataimporthandler


【解决方案1】:

我最终编写了几行代码来解析 html 文件 (jsoup) 并放弃了 solr 数据导入处理程序 (DIH)。

使用 Spring 和 solr 和 jsoup html 解析器非常简单。

一个警告:用于存储 solr 字段的我的 java“bean”对象需要一个“text”字段才能使开箱即用的默认搜索字段工作(即使用solr docker 实例)

【讨论】:

  • 澄清我的 java bean 需要一个名为 underscore-text-underscore ...(用下划线包裹的“text”字符串)的字段,以便默认搜索字段正常工作。
猜你喜欢
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多