【问题标题】:SOLR Search results with associated file带有关联文件的 SOLR 搜索结果
【发布时间】:2013-05-01 12:32:53
【问题描述】:

我正在使用 solr 搜索(solr 4.X),一切都按预期工作,我要求我还需要显示相关文件以及搜索结果。

我得到的是搜索结果,但不是文件。我如何得到,至少我期望文件名与搜索结果一起。

感谢您的帮助。请帮帮我

【问题讨论】:

  • 请向我们展示您的架构并告诉我们有关如何索引和查询文件的更多信息。否则很难帮你。谢谢
  • 感谢您的回复!该架构正是示例架构。我使用 post.jar 索引文件。我通过 solrj 客户端查询了 solr。我得到了我想要的结果,但我也想要关联的文件和结果。例如:我正在搜索名为“solr”的关键字,得到所有字段的结果,而不是文件名。我期望文件名为 solr.xml 或任何方式。请帮我。谢谢
  • 如果你没有索引文件名,那么这个信息不是 solr 并且你不能取回它。如果您需要结果集中的文件名,则需要对其进行索引和存储。
  • 谢谢。 Ic,例如,如果我正在索引 pdf 文件,如何将文件名添加为索引的一部分?如果是 xml 文件,是的,我也会将文件名添加为我的内容的一部分。请给我建议。
  • post.jar 仅用于示例。您将需要使用自己的程序生成 xml 文件或使用像 solrj 这样的库

标签: solr solr4


【解决方案1】:

Solr 是一个通用的企业搜索服务器。它对文件或它索引的数据的来源一无所知。你将不得不自己做这件事。

Schema (schema.xml) 定义了哪些字段被索引。当你设计你的模式时,你必须决定存储什么以及以什么方式存储。

如果您想要恢复文件名,则必须手动将它们添加到索引中,方法是首先在架构中提供一个字段,然后在每次向索引中添加内容时填充该字段。

你可能不想标记你的文件名,除非你也想搜索它。如果您的文件名包含完整路径,则可以认为它是唯一的,您也可以将其用作您的 id。

如果你通过 xml 添加它,你只需要在你的文档列表中添加一个新字段,例如

  <doc>
      ...
      <field name="filename">/some/path/basename.extension</field>
      ...
  </doc>

如果你使用 solrj,它看起来像这样:

    HttpSolrServer server = new HttpSolrServer(host);
    SolrInputDocument doc = new SolrInputDocument();
    doc.addField("filename", document.getFilename());
    Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
    docs.add(doc);
    server.add(docs);

【讨论】:

  • Phisch,非常感谢您的回复,我知道了。还有一件事,我理解 xml 文件的情况。 pdf文件如何实现相同的功能?
  • 您需要从 PDF 中提取您要查找的数据并将其发送到 solr(以字符串的形式)。 Apache Tika 进行提取。还有 DataImportHandlers 可以处理 pdf 文件,但有限制。
  • 知道了。非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多