Liferay Поиск по структурированному веб-контенту, совпадающему с термином вложения - PullRequest
0 голосов
/ 31 января 2019

У нас есть структура веб-контента «S» с полем «Документы и мультимедиа».

Мы создали веб-контент с именем «W» на основе предыдущей структуры «S» с вложенным в файл словом «a».»С текстом« привет »внутри него.

Мы знаем, что lucene / ElasticSearch индексирует содержимое вложения, если это, например, файл в формате word или pdf.

Итак, мы делаемпоиск lucene (с использованием booleanQuery, подборка для journalArticle) для получения веб-контента S в соответствии с поисковым термином «hello».

Но мы видели, что lucene, фильтруя по journalArticle, возвращает json-подобный объект с этими данными:

"ddm__keyword__87940__attachements_en_US": [{\ "groupId \": \ "115863 \", \ "title \": \ "a.word \", \ "type \": \ "document \", \ "uuid\ ": \" dffd1d3d-8b78-a64c-4d0c-8d004d24cb75 \ "}]

У него есть только ссылка на объект DLFileEntry.

Есть ли способ, только с одним запросом, чтобы получить статью журнала, соответствующую вложенному слову?

Мы видели, что Liferay предлагает «индексный постпроцессор», который может помочь нам хранить данные DLFileEntry внутри нового поля нашего веб-контента, но индексация DLFileEntry асинхронна.

Что мы можем сделать?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Мы нашли решение:

  1. мы создаем постпроцессор индексатора хука для класса JournalArticle.
  2. в постпроцессоре индексатора, мы извлекаем dlFileEntry и индексируем его через document.addFile () .
  3. в нашем портлете теперь мы можем запрашивать содержимое файла с помощью booleanQuery ( addterm ) и с помощью IndexSearcherHelperUtil.search

Единственным недостатком является то, что содержимое файла индексируется дважды (изначально с помощью dlFileEntry и теперь в journalArticle)

0 голосов
/ 09 февраля 2019

Если вы не настаиваете на одном запросе на уровне ES, я бы обратился к нему с помощью постпроцессоров Hit.

https://dev.liferay.com/de/develop/tutorials/-/knowledge_base/7-0/introduction-to-liferay-search#hitsprocessor

Я бы запросил слово в файлах изатем, если есть попадание, я бы улучшил результат постпроцессором, чтобы добавить / заменить потенциальную запись веб-контента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...