【问题标题】:Storing Raw HTML Files in Solr在 Solr 中存储原始 HTML 文件
【发布时间】:2016-05-22 10:43:09
【问题描述】:

我有 Solr 5.4.1,我正在尝试索引和存储 html 文件。我想存储原始 HTML,以便我可以使用它来突出显示。

有没有办法做到这一点?我的更新/提取请求处理程序使用 Tika,我相信它会从我的文件中剥离 html 标签,因此希望避免这种情况用于存储原始 html 内容。

提前致谢

【问题讨论】:

  • Solr 对于数据检索来说并不是那么好。您是否考虑过将原始 html 存储在其他地方,例如 sql 数据库或其他 rdbms?只需将可搜索的文本放入 Solr 中,然后在 solr 文档中添加页面 id,然后通过页面 id 在您的 db 中查找完整的 html。
  • 主要问题是我想搜索关键字,然后在原始 html 中突出显示这些关键字。这可能吗?例如。
    你好,这是一些关键字内容
    ,然后如果我要搜索“关键字”,Solr 会输出
    你好,这是一些 关键字 内容
    或类似的东西。
  • Solr 无论如何都不能动态插入 html 标签,对吧?您不会从数据库中获取生成的原始 HTML,然后在事后搜索关键字并将 html 插入那里吗?

标签: html apache indexing solr apache-tika


【解决方案1】:

在 Solr 中搜索 HTML 内容的最简单方法是使用 HTMLStripCharFilterFactory 进行索引。这会在索引时从文本中去除 HTML 标签(包括属性),这意味着您可以搜索文本而无需搜索标签。该字段的存储版本仍将包含 HTML 标记。

<!-- Field type for HTML fields, stripping HTML characters during indexing -->
<fieldType name="text_html" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <charFilter class="solr.HTMLStripCharFilterFactory"/>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

但是,这可能会导致突出显示标记导致您的 HTML 标记中断,要么出现在 HTML 标记的中间,要么切断结束标记。另一种解决方案是在存储到 Solr 之前剥离 HTML。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2022-08-21
    • 1970-01-01
    相关资源
    最近更新 更多