0

このようなカテゴリ ツリー:

root_1
  sub_1
  sub_2
  ... to sub_20 

すべてのドキュメントにはサブカテゴリ ( などsub_2) があります。sub_2今、私は lucene インデックスでのみ書きました:

new NumericField("category",...).setIntValue(sub_2.getID());

root_1すべての のドキュメントを取得したい( toをBooleanQueryマージ) を使用して、すべてのエントリ ドキュメントで他のカテゴリを検索または書き込みます。sub_1sub_20

new NumericField("category",...).setIntValue(sub_2.getID());
new NumericField("category",...).setIntValue(root_1.getID());//sub_2's ancestor category

どちらがより良い選択ですか?

4

1 に答える 1

2

カテゴリ階層のパス列挙/「デューイ十進法」表現を使用します。つまり、最初のルートの2番目の子の「sub_2」を単に格納するのではなく、「001.002」のようなものを格納します。

ルートとそのすべての子を見つけるには、「category:001*」で検索します。

ルートの子のみを検索するには、「category:001。*」で検索します。

(ツリーデータをLucene / Solr /ElasticsearchインデックスまたはNoSQLデータベースに保存する方法も参照してください。)

于 2012-05-08T12:56:13.280 に答える