本文主要是介绍Integrate with Portal Search,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Registering Entries with the Search Framework
创建EntrySearchRegistrar.java
1.实现activate(BundleContext bundleContext)和deactivate()
@Activateprotected void activate(BundleContext bundleContext) {_serviceRegistration = modelSearchRegistrarHelper.register(Entry.class, bundleContext, modelSearchDefinition -> {modelSearchDefinition.setDefaultSelectedFieldNames(Field.COMPANY_ID, Field.ENTRY_CLASS_NAME,Field.ENTRY_CLASS_PK, Field.UID, Field.SCOPE_GROUP_ID, Field.GROUP_ID);modelSearchDefinition.setDefaultSelectedLocalizedFieldNames(Field.TITLE, Field.CONTENT);modelSearchDefinition.setModelIndexWriteContributor(modelIndexWriterContributor);modelSearchDefinition.setModelSummaryContributor(modelSummaryContributor);modelSearchDefinition.setSelectAllLocales(true);});}@Deactivateprotected void deactivate() {_serviceRegistration.unregister();}
设置用于从搜索引擎检索结果文档的默认选定字段名称
2.创建引用
@Reference(target = "(indexer.class.name=com.liferay.docs.guestbook.model.Entry)")protected ModelIndexerWriterContributor<Entry> modelIndexWriterContributor;@Referenceprotected ModelSearchRegistrarHelper modelSearchRegistrarHelper;@Reference(target = "(indexer.class.name=com.liferay.docs.guestbook.model.Entry)")protected ModelSummaryContributor modelSummaryContributor;private ServiceRegistration<?> _serviceRegistration;}
Indexing Entries
1.Implementing ModelDocumentContributor
2.Implementing ModelIndexerWriterContributor
- 检索所有entries并将其添加到集合中
3.Implementing EntryBatchReindexer
Querying for Entry Documents
1.实现EntryKeywordQueryContributor ,为正在进行的搜索查询提供子句。
@Overridepublic void contribute(String keywords, BooleanQuery booleanQuery,KeywordQueryContributorHelper keywordQueryContributorHelper) {SearchContext searchContext =keywordQueryContributorHelper.getSearchContext();queryHelper.addSearchLocalizedTerm(booleanQuery, searchContext, Field.TITLE, false);queryHelper.addSearchLocalizedTerm(booleanQuery, searchContext, Field.CONTENT, false);queryHelper.addSearchLocalizedTerm(booleanQuery, searchContext, "entryEmail", false);}
2.实现EntryModelPreFilterContributor ,控制在搜索引擎返回搜索结果之前如何过滤。
Generating Results Summaries
创建EntryModelSummaryContributor
- search和asset publisher可以显示搜索引擎的检索结果,
显示结果由EntryModelSummaryContributor实现 - 通过合并实体数据的关键部分来创建摘要
Handling Indexing in the Entry Service Layer
在add, update方法前添加@Indexable(type = IndexableType.REINDEX)注解
在delete方法前添加@Indexable(type = IndexableType.DELETE)注解
这篇关于Integrate with Portal Search的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!