0

data-configでできるように、ドキュメントにエンティティを追加したいと思います。現在、ドキュメントのすべてのページを1つのドキュメントとしてインデックスに登録しています。

今 :

<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がデータベースからエンティティをインポートできることを確認しましたが、どうすれば同じことができるのでしょうか。(または同様のもの)

私はsolr3.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ドキュメントとしてフィードすることができます。

すべてのページに同じIDを使用し(IDはスキーマ定義のプライマリフィールドではありません)、グループ化(フィールド折りたたみ)を使用してドキュメントの結果をグループ化できます。

于 2012-11-14T10:57:03.530 に答える