我想向文档添加实体,就像使用数据配置一样。 目前,我正在将文档的每一页作为单个文档进行索引。
现在:
<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/