java - 使用 solrj 和 schema.xml 将实体添加到 solr

标签 java solr solrj

我想向文档添加实体,就像使用数据配置一样。 目前,我正在将文档的每一页作为单个文档进行索引。

现在:

<solrDoc>
<id>1</id>
<docname>test.pdf</docmname>
<pagenumber>1</pagenumber>
<pagecontent>blablabla</pagecontent>
</solrDoc>

<solrDoc>
<id>2</id>
<docname>test.pdf</docmname>
<pagenumber>2</pagenumber>
<pagecontent>blablabla</pagecontent>
</solrDoc>

正如您所看到的,与文档相关的数据被存储了 x 页次。我想要获得这样的文件:

<doc>
<id>1</id>
<docname>test.pdf</docmname>
<pageEntries> //multivaluefield
<pageEntry><pagenumber>1</pagenumber><pagecontent>blablabla</pagecontent></pageEntry>
<pageEntry><pagenumber>2</pagenumber><pagecontent>blablabla</pagecontent></pageEntry>
</pageEntries>
</doc>

我不知道如何制作类似 pageEntry 的东西。我看到 solr 可以从数据库导入实体,但我想知道如何做同样的事情?(或类似的东西)

我使用的是 solr 3.6.1。页面提取是我自己使用pdfbox完成的。

Java代码:

SolrInputDocument solrDoc = new SolrInputDocument();
solrDoc.setField("id", 1);
solrDoc.setField("filename", "test");
            for (int p : pages) {
                solrDoc.addField("page", p);
            }
            for (String pc : pagecont) {
                solrDoc.addField("pagecont", pc);
            }

最佳答案

如果提取是由您执行的,您可以合并所有页面并将其作为单个 Solr 文档提供,其中页码和页面内容是多值字段。

您可以对所有页面使用相同的 ID(该 ID 不是架构定义中的主字段),并使用分组 ( Field Collapsing ) 对文档的结果进行分组。

关于java - 使用 solrj 和 schema.xml 将实体添加到 solr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13375899/

相关文章:

tomcat - Nutch 不会将内容索引到 solr,但不会记录任何类型的错误或警告

unit-testing - 通过嵌入式服务器测试 Solr

image - 存储图像以在 SOLR 搜索结果中显示

java - solrj设置查询字段

solr 多核 vs 分片 vs 1 个大集合

java - Embedded Solr Server 的使用是否过时且不推荐?

java - 在Java中验证Http请求的方法?

java - 从单个数据库中通过 id AND St​​ring 获取数据

java - 使用gson在json中剪切太长的字符串

java - 如何让 Jersey 使用 SLF4J 而不是 JUL?