Индексирование файлов XML (DITA) с помощью Lucene и запрос значений атрибутов - PullRequest
0 голосов
/ 07 января 2019

Мы пытаемся реализовать комплексную индексацию для файлов 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?

...