Передача параметров в функцию поиска услуг Liferay

Мне нужно использовать индекс Liferay для поиска пользователей, которые соответствуют определенной строке, и это возможно с помощью UserLocalServiceImpl#search(long companyId, String keywords, int status, LinkedHashMap<String,Object> params, int start, int end, com.liferay.portal.kernel.search.Sort sort).

Кроме того, я хотел бы иметь возможность фильтровать пользователей по UserGroup.

Я ожидаю, что смогу передать userGroupId этой функции в params, но не похоже, что я могу найти какую-либо документацию о том, каким должно быть params.

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

Кто-нибудь знает что-нибудь о том, что я могу поместить в params для этой цели?

Я использую Liferay CE версии 7.0.


person Carlo    schedule 19.08.2018    source источник


Ответы (1)


Посмотрите, добавьте UserIndexer.java в методе addContextQueryParams. Похоже, ключ параметра должен быть usersGroups и иметь значение Long[]. Здесь обрабатываются некоторые другие ключи, поэтому вы можете получить некоторую информацию о том, как здесь обрабатываются параметры (отладчик?).

person Andre Albert    schedule 20.08.2018
comment
Да, это действительно имело для меня смысл, но, включив журналы для индексаторов и взглянув на запросы, которые были сделаны к elasticsearch, выяснилось, что usersGroups — это не список идентификаторов UserGroup, а Group идентификаторов для Users для фильтрации - person Carlo; 08.09.2018