文書の代わりにLuceneインデックスに格納する必要がある小さな木があります。それをどうやって行うのですか?Lucene/Solr/ElasticsearchインデックスまたはNoSQLデータベースにツリーデータを格納する方法は?
ツリーの例ノード:
class Node
{
String data;
String type;
List<Node> children;
}
上記ノードにおいては、「データ」のメンバ変数は、フルテキスト検索する必要があるので、単語のスペースで区切られた文字列です。 "type"メンバ変数は単なる単語です。
検索クエリはツリー自体であり、各ノードのデータとタイプの両方、および一致するツリーの構造を検索します。子ノードと照合する前に、照会はまず親ノードのデータと型に一致しなければなりません。データ値におおよそのマッチングが可能です。
この種のデータのインデックスを作成するには、どのような方法が最適ですか? Luceneがこれらのデータのインデックス作成を直接サポートしていない場合、これはSolrまたはElasticsearchによって行うことができますか?
私はneo4jをすばやく見ましたが、小さなツリー構造の大きなコレクション(数十億または数兆ドル)ではなく、グラフ全体がデータベースに格納されているようです。または私の理解は間違っていた?
また、非LuceneベースのNoSQLソリューションがこれに適していますか?
何あなたが検索時に見つけるために探しています。 NodeBをNodeAの子として持ち、NodeBにFOOというテキストがある場合、FOOを検索するときは、NodeBまたはNodeAを返しますか? – sbridges
クエリはツリー構造とツリーデータと照合されます。したがって、NodeAのデータがすでに一致している場合、NodeBのFOOの発生は完全一致となります。 –
あなたはFOOがNodeAとNodeBになければならないと言っていますか?または、そのタイプはNodeAで一致する必要がありますが、タイプがNodeBで一致するかどうかは関係ありません。 – sbridges