0

像这样的类别树:

root_1
  sub_1
  sub_2
  ... to sub_20 

每个文档都有一个子类别(如sub_2)。sub_2现在,我只在 lucene 索引中写道:

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

我想获取 allroot_1的文档,使用BooleanQuery(合并sub_1to sub_20)在每个条目文档中搜索或编写其他类别:

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

哪个是更好的选择?

4

1 回答 1

2

我将使用类别层次结构的路径枚举/“Dewey Decimal”表示。也就是说,不是只为第一个根的第二个孩子存储“sub_2”,而是存储类似“001.002”的东西。

要查找根及其所有子项,您将搜索“ category:001* ”。

要仅查找根的子节点,您将搜索“ category:001.* ”。

(另请参阅如何将树数据存储在 Lucene/Solr/Elasticsearch 索引或 NoSQL 数据库中?。)

于 2012-05-08T12:56:13.280 回答