1

我必须为 Liferay 文档和媒体的过滤器构建一个功能。我必须根据文件的扩展名过滤掉搜索。例如,我们有一组 .pdf、.xml、.txt 或图像文件。然后当用户选择 PDF 时,它应该只显示 PDF 文件。同样适用于图像或文本文件。与电子商务网站过滤器相同。

4

1 回答 1

1

您可以使用以下代码直接查询搜索引擎(Elasticsearch)。您必须使用 BooleanQuery、TermQuery、TermRangeQuery、MultiMatchQuery 等将条件添加到 booleanQuery 变量。

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(hits) 将搜索结果命中转换为资产条目,其中 _assetHelper 是对以这种方式定义的 AssetHelper 类的引用:

@Reference
private AssetHelper _assetHelper;

希望能帮助到你!

于 2020-02-10T15:10:49.807 回答