Пользовательский фильтр в Liferay Portal 7.2 - PullRequest
1 голос
/ 24 января 2020

Мне нужно создать одну функциональность для фильтра документов и носителей Liferay. Я должен отфильтровать поиск по расширению файла. Например, у нас есть набор .pdf,. xml,. Txt или файл изображения. Затем, когда пользователь выбирает PDF, он должен отображать только файлы PDF. То же самое для изображения или текстового файла. То же, что и фильтр сайта электронной торговли.

1 Ответ

0 голосов
/ 10 февраля 2020

Вы можете напрямую запросить поисковую систему (Elasticsearch), используя следующий код. Вы должны добавить свои условия в переменную booleanQuery, используя BooleanQuery, TermQuery, TermRangeQuery, MultiMatchQuery и т. Д. c ..

BooleanQuery booleanQuery = new BooleanQueryImpl();
TermQueryImpl termQuery = new TermQueryImpl(new QueryTermImpl(Field.ENTRY_CLASS_NAME, DLFileEntryLocalServiceUtil.class.getName()));
booleanQuery.add(termQuery, BooleanClauseOccur.MUST);

SearchContext searchContext = new SearchContext();
searchContext.setCompanyId(companyId);
searchContext.setGroupIds(new long[]{groupId});
Hits hits = IndexSearcherHelperUtil.search(searchContext, booleanQuery);

Затем вы можете преобразовать результаты поиска в записи активов с помощью _assetHelper.getAssetEntries. (хиты) где _assetHelper - ссылка на класс AssetHelper, определенный следующим образом:

@Reference
private AssetHelper _assetHelper;

Надеюсь, это поможет!

...