0

solr でネストされたドキュメントを作成したいのですが、java/GWT/SolrJ を使用しています。

現在、次のフィールドにインデックスを付けています。

項目:
id title desc.

1 xyz xyzxyzxyz

2 pqr pqrpqrpqr

3 abc abcabcabc.

しかし今、上記の各ドキュメントにリンクされたドキュメントをもう 1 つ作成したいと思います。つまり、id 1 の場合、次のフィールドを含むサブドキュメントが 1 つあります。

アイテム_ユーザー_詳細:

項目 1 の場合:

ユーザーの詳細

1 クウェクウェクウェ

2 xyzxyzxyz

3 アスダスダス

このようにして、上記のテーブルからアイテム ID ごとに作成したいのですが、item_user_details のリンクされたドキュメントが 1 つあります。

これどうやってするの...?前もって感謝します...

4

1 に答える 1

2

私たちのスキーマには、関連するテーブルがたくさんあります。

すべての関係を 1 つのドキュメントにまとめることにしました。これを実現するために、インデックスから各ドキュメントをロードし、関連するフィールドを追加して、そのドキュメントを書き戻すカスタム インポーター (SolrJ を使用) を作成しました。

[編集]
これは次の方法で行います。

  1. 各テーブルの csv ファイルにデータをエクスポートします (item、item_user_details)
  2. 各csvファイルをSolrにインポートします。上部から始めます(あなたの場合の項目)
  3. Embedded-Solr サーバーを起動します。
    System.setProperty("solr.solr.home", config.getSolrIndexPath()); CoreContainer.Initializer initializer = new CoreContainer.Initializer(); this.coreContainer = initializer.initialize(); this.solr = new EmbeddedSolrServer(this.coreContainer, "");
    または、リモート solr インスタンスにアクセスすることもできます。
    this.solr = new HttpSolrServer("http://[your-url]/solr");
  4. ファイルの各行に対して SolrDocument を作成する
  5. インデックスに追加しますthis.solr.add(ClientUtils.toSolrInputDocument(doc));
  6. 専念this.solr.commit();
  7. インデックスからドキュメントを読み込む (アイテム)
  8. ドキュメント ID (item-id) を使用して、item_user_details の csv ファイル内の関係を識別します。
  9. 読み込まれたドキュメントを item_user_details のフィールドで拡張
  10. ドキュメントを再度コミットする
于 2012-08-09T08:40:40.537 に答える