¿Usando BooleanQuery o escribiendo más índices?

Un árbol de categorías como este:

root_1
  sub_1
  sub_2
  ... to sub_20 

Cada documento tiene una subcategoría (comosub_2). Ahora solo escribisub_2 en el índice de lucene:

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

Quiero conseguir todoroot_1documentos, utilizandoBooleanQuery (fusionar elsub_1 asub_20) para buscar o escribir otra categoría en cada documento de entrada:

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

¿Cuál es la mejor opción?