¿Usando BooleanQuery o escribiendo más índices?

Un árbol de categorías como este:

<code>root_1
  sub_1
  sub_2
  ... to sub_20 
</code>

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

<code>new NumericField("category",...).setIntValue(sub_2.getID());
</code>

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

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

¿Cuál es la mejor opción?

Respuestas a la pregunta(1)

Su respuesta a la pregunta