基本的に、Lucene でインデックスを作成したい非常に単純なデータベースがあります。ドメインは次のとおりです。
// Person domain
class Person {
Set<Pair> keys;
}
// Pair domain
class Pair {
KeyItem keyItem;
String value;
}
// KeyItem domain, name is unique field within the DB (!!)
class KeyItem{
String name;
}
私は数千万のプロファイルと数億のペアを持っていますが、KeyItem の「名前」フィールドのほとんどが重複しているため、KeyItem インスタンスは数十しかありません。KeyItem インスタンスを節約するために、その構造にたどり着きました。
基本的に、任意のフィールドを持つ任意のプロファイルをその構造に保存できます。プロパティでプロファイリングしたとしましょう
- name: Andrew Morton
- eduction: University of New South Wales,
- country: Australia,
- occupation: Linux programmer.
それを保存するために、1 つの Profile インスタンス、4 つの KeyItem インスタンス (名前、教育、国、職業)、および値を持つ 4 つの Pair インスタンス ("Andrew Morton"、"University of New South Wales"、"Australia"、"Linux) を用意します。プログラマー"。
他のすべてのプロファイルは、KeyItem の同じインスタンス (すべてまたは一部) を参照します: 名前、教育、国、および職業。
私の質問は、KeyItem::name と Pair::value の特定の値を Profile で検索できるように、すべてのインデックスを作成する方法です。理想的には、そのようなクエリが機能することを望みます:
名前:Andrew* AND 職業:Linux*
カスタム インデクサーとサーチャーを作成する必要がありますか? または、標準のものを使用して、KeyItem と Pair を Lucene コンポーネントとしてマップすることもできますか?