0

私のアプリケーションの1つでは、巨大なデータ(30GB)にインデックスを付ける必要があります。このデータのインデックス作成にはSOLRを使用しています。schema.xmlには50個のフィールドがあります。さまざまなデータベースのデータにインデックスを付けています。

ただし、すべてのフィールドのインデックス作成時に、データは利用できません。そのため、複数のコアを作成し、各コアに個別にインデックスを付けました。

例:-コア0を使用して、個別のクエリを使用して5つのフィールドにインデックスを付けています

デュアルからField1、Field2、Field3、Field4、Field5を選択します。

Field1---コア間で共通のフィールドField2---このコアでインデックス付けされるフィールドField3--このコアでインデックス付けされるフィールドField4--このコアでインデックス付けされるフィールドField5--このコアでインデックス付けされるフィールド

したがって、core0の残りのすべてのフィールドは、上記の5つのフィールド以外はnullになります。

コア1の次

コア1個別のクエリを使用して3つのフィールドにインデックスを付けています

デュアルからField1、Field6、Field6を選択します。

Field1---コア間で共通のフィールドField6---このコアでインデックス付けされるフィールドField7--このコアでインデックス付けされるフィールド

すべてのコアに共通のschema.xmlを使用しています。

クエリについては、各コアを個別にクエリして結果をマージするカスタムリクエストハンドラーを作成しました。また、各コアのデータは3時間ごとに更新されます。solr4.0で部分更新機能を試しましたが、インデックス作成に時間がかかりすぎます......あまり役に立ちません

この問題を処理するためのより良いアプローチ/設計はありますか?

ありがとう、ラヴィ

4

1 に答える 1

0

shards複数のコアにまたがるクエリに使用できます。これは、任意のコードから実行できます。

例えば;

solr/core1/select/?q=iPad&shards=localhost:8983/solr/core1,localhost:8983/solr/core0

で「,」を使用して、必要な数のコアを渡すことができますshards

于 2012-10-19T17:45:04.740 に答える