Вопрос по java – Использование BooleanQuery или написать больше индексов?

0

Дерево категорий, подобное этому:

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

Каждый документ имеет подкатегорию (например,sub_2). Теперь я только написалsub_2 в люцене:

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

Я хочу получить всеroot_1окументы @, использующиеBooleanQuery (объединитьsub_1 вsub_20) для поиска или записи другой категории в каждом документе ввода:

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

Какой выбор лучше?

Ваш Ответ

1   ответ
2

юи в иерархии категорий. То есть вместо того, чтобы просто хранить «sub_2» для второго дочернего элемента первого корня, вместо этого сохраните что-то вроде «001.002».

Чтобы найти корень и всех его дочерних элементов, нужно выполнить поиск по "category: 001 *».

Чтобы найти только детей корня, вы должны искать на "category: 001 * ».

(Пожалуйста, смотрите также Как хранить данные дерева в индексе Lucene / Solr / Elasticsearch или в базе данных NoSQL?.)

Я делал это раньше, за исключением того, что я не использовал идентификаторы, я просто сохранил имя как путь, например,category=root_1/sub_1 и т.д., а затем искалиroot_1 с помощьюcategory:root_1* Bohemian♦

Похожие вопросы