0

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

现在 :

<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);
            }
4

1 回答 1

1

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

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

于 2012-11-14T10:57:03.530 回答