Индексирование файлов XML (DITA) с помощью Lucene и запрос значений атрибутов

Мы пытаемся реализовать комплексную индексацию для файлов XML (DITA) в AEM, используя Lucene. Прямо сейчас поиски поддерживаются полнотекстовым индексом.

Например: в приведенном ниже документе весь текст извлекается и индексируется для облегчения полнотекстовых запросов к содержимому документа.

<concept id="lawnmowerconcept" xml:lang="en-us">
<title>Lawnmower</title>
<conbody product="mower25h">
    <p>The lawnmower is a machine used to cut grass in the yard. Lawnmowers can be electric, gas-powered, or manual.</p>
</conbody>
</concept>

Теперь просьба также разрешить специализированный поиск XML. Например:

  • Пользователь может искать по имени элемента. например, el:conbody - это должно возвращать только те документы, которые имеют <conbody> элемент.
  • Пользователь может искать по имени атрибута. Например, @product=”%” - здесь должны возвращаться только те документы, у которых атрибут product применен хотя бы к одному из его элементов. Обратите внимание, что мы не обеспокоены значением этого атрибута.
  • Пользователь может выполнять поиск по паре имя-значение атрибута. Например, @product=”mower25h” - при этом должны возвращаться только те документы, у которых атрибут product применен хотя бы к одному из его элементов со значением mower25h.

Каков наилучший способ реализации:

  • Продолжайте использовать полнотекстовый индекс, но используйте специальный анализатор Lucene для сохранения разметки XML. Например <title>Lawnmower</title> будет разбит на <title>, Lawnmower, </title> без зачистки специальных символов.

  • Создайте новый полнотекстовый индекс с помощью специального анализатора, который удаляет все текстовое содержимое и индексирует только элемент, имена атрибутов и значения атрибутов. Возможно ли пересечение двух индексов? Например, запрос типа el:p=%lawnmower% вернет вышеуказанный документ, потому что он имеет <p> элемент с текстом газонокосилки.

  • Или мне следует полностью избегать AEM Lucene и предпочтительно использовать внешний индекс, такой как Solr?

0 ответов

Другие вопросы по тегам