Как построить поиск родительских отношений в Elastic-search с использованием Liferay API?

У нас в Liferay есть пользовательская сущность под названием "Публикация". Он индексируется в Elastic-search и содержит поле с именем 'journalArticleId'.

Исходя из наших требований к поиску, если какой-либо пользователь выполняет поиск по любому ключевому слову в журнальной статье, мы должны вернуть документ публикации, который содержит "journalArticleId" соответствующего журнала.

Я нашел решение для реализации этого с помощью Java API, но я ищу Liferay API для решения этой проблемы.

Эластичный поиск Java-API поиска данных между родителями и детьми

Заранее спасибо за любой ответ.

3 ответа

Решение

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

Мы связались со службой поддержки Liferay, и они ответили, что адаптер Liferay-asticsearch пока не поддерживает эту функцию. версия: liferay-dxp-digital-enterprise-7.0-sp3

Для расширения существующих индексаторов вы должны попытаться реализовать обработчик постпроцессора индексатора... вместо того, чтобы фактически переопределять их с помощью плагина ext

ссылка для 6.2 https://dev.liferay.com/de/develop/tutorials/-/knowledge_base/6-2/extending-the-indexer-post-processor-using-a-hook

ссылка для 7 aka dxp https://dev.liferay.com/de/develop/reference/-/knowledge_base/7-0/indexer-post-processor

Вы должны быть в состоянии найти документацию для переопределения индексатора. Похоже, вы могли бы просто расширить существующий индексатор журнала: просто добавьте дополнительные данные публикации в полнотекстовый индекс для существующей статьи журнала, и он будет найден автоматически.

Редактировать (после вашего комментария): Не глядя на это, я предполагаю, что инкапсуляция API в Liferay на самом деле не учитывает отношения между родителями и детьми (но: я могу ошибаться, это может быть или просто). Однако Liferay также позволяет вам обмениваться Elasticsearch с SOLR (и, возможно, с другими), поэтому его API, естественно, не использует все функции базовых поисковых систем. Однако вы всегда должны иметь возможность делать дополнительные вызовы самостоятельно - возможно, не в индексаторе, а ближе к адаптеру ES.

Решение может быть следующим: подготовить содержимое в индексаторе и разделить его на родительский и дочерний позже в адаптере Elasticsearch.

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