0

SolrJ を使用して一連の Java クラスのインデックスを作成したいと考えています。各クラス インスタンスは、クラス内で一意の ID によって決定されます。ただし、これらのクラスから Solr ドキュメントを作成するために Solr @Field アノテーションを使用すると、このアノテーションは、Solr インデックスに格納された作成済みドキュメントの一意性を保証しないことがわかります (同じ id 値が複数のクラスに属している可能性があります)。

Solrスキーマの指定されたフィールドに一意のID値を生成するために、注釈アプローチをSolr UUIDデータ型と組み合わせてみましたが、成功しませんでした。

その結果、複数のクラス間で一意性を保証する、SolrJ のものとそれほど変わらない単純なアノテーション メカニズムを作成しました。これは、オブジェクト クラス名とその ID を組み合わせて一種の UUID を取得し、それを Solr スキーマに格納することによって行われます。

何かが欠けていないかどうかわからないので、上記の実用的な解決策が私の場合に十分であるかどうか、またはよりクリーンでより良い代替案があるかどうかを知りたい.

4

2 に答える 2

2

これは有効なアプローチだと思います。私たちは、私たちの場所で複数のインデックスを使用して同様のことを行っています。たとえば、データベースには 4 つの異なるタイプのアイテムがあり、それらをインデックスの共通スキーマにロードし、データベース テーブル ID の前にタイプの最初の 2 つの一意の文字を付けて、一意になるようにします。

また、IMO、1 つのインデックスで複数の異なるタイプのインデックスを作成することは、実際には好みであり、以下のリンクに示されている経験則ではありません。

于 2013-02-22T21:07:33.000 に答える
0

通常、1 つの POJO は 1 つのスキーマと 1 つの Solr コアに対応します。異なる POJO を 1 つの Solr コアにインデックス付けする理由がわかりません。

しかし、そうは言っても、クラス名のアプローチはうまくいくはずです。それ以外の場合は、クラスごとに静的CLASS_IDフィールドを宣言し、クラスごとに異なるようにして、のように連結して Solr ドキュメント ID を形成できますid:CLASS_ID

于 2013-02-22T20:01:40.953 に答える