これはもっと実際にはLuceneに関する質問ですが、これはneo4jデータベースのコンテキストにあります。Neo4jの索引付け(Luceneを使用) - ノードのタイプを整理するのに適していますか?
私は、50種類ほどのノードタイプに分かれているデータベースを持っています(他のタイプのdbsでは "コレクション"または "テーブル"なので)。それぞれにはインデックスを作成する必要のあるプロパティのサブセットがあり、一部は同じ名前を共有しているものもあれば、そうでないものもあります。
検索するとき、私はいつも特定のタイプのノードを見つけたいと思います。私はこれを組織する3つの方法を参照することができます
:インデックス「foo」で、'id'='1234'
:
タイプごとに1つのインデックスを、プロパティは、インデックスフィールドに自然にマッピングされます。
各フィールドはプロパティ名にマップされ、値の一部として型を含めるか(
'id'='foo:1234'
)、ノードが返されるとノードをチェックします(重複は非常に稀です)。単一のインデックスのtypeは、フィールド名の一部です(
'foo.id'='1234'
)。
作成すると、データベースは読み取り専用です。
利便性、サイズ/キャッシュ効率、またはパフォーマンスの面で利点がありますか?
私が理解しているように、最初のオプションでは、neo4jは各タイプに対して別々の物理インデックスを作成しますが、これは最適ではないようです。 3番目には、ほとんどのluceneドキュメントでフィールドの小さなサブセットしか持たず、何かに影響があるかどうかはわかりません。
インデックスの全体的なサイズが小さくなるため、それぞれのタイプごとに個別のインデックスを持つ方が便利ですばやく表示されます。しかし、私は何かが欠けているかもしれません。 – biziclop
@biziclop:個々の指標の開閉を管理しなければならないので、実際には私にとっては最も不便なようでした。私の理解では、全体のサイズも大きくなります(jpountzの答えを参照)。 – Dmitri
@Dimitri明らかに、全体的なサイズは大きくなりますが、問題は次のとおりです。あるいは、他のタイプより頻繁に検索されるタイプもありますか?いずれにしても、私がやることは、最も便利なソリューションを実装し、それがうまくいくかどうかを確認することです。そうであれば、勝者がいます。 – biziclop