Indexing 在Liferay 6.1中搜索时包含动态数据列表记录的最佳方法

Indexing 在Liferay 6.1中搜索时包含动态数据列表记录的最佳方法,indexing,liferay,liferay-6,wcm,Indexing,Liferay,Liferay 6,Wcm,在Liferay 6.2中,可以在动态数据列表定义的字段上设置可索引选项,从而使其可搜索() 我想在搜索中包括DDL记录,并且必须使用Liferay 6.1。我想知道,做这件事最好的办法是什么 现在我已经研究过了,但是动态数据列表并没有作为一个选项被提到 我也看过,但如果我理解正确,它只能改变现有的索引过程 这似乎是可能的,但我想知道这是否是最好的方法,因为该过程可能非常耗时,而且我不知道适用于自定义资产的相同过程是否也适用于动态数据列表 在Liferay 6.1(如6.2)中,有没有更简单的方

在Liferay 6.2中,可以在动态数据列表定义的字段上设置
可索引
选项,从而使其可搜索()

我想在搜索中包括DDL记录,并且必须使用Liferay 6.1。我想知道,做这件事最好的办法是什么

现在我已经研究过了,但是动态数据列表并没有作为一个选项被提到

我也看过,但如果我理解正确,它只能改变现有的索引过程

这似乎是可能的,但我想知道这是否是最好的方法,因为该过程可能非常耗时,而且我不知道适用于自定义资产的相同过程是否也适用于动态数据列表

在Liferay 6.1(如6.2)中,有没有更简单的方法来实现我没有看到的可搜索动态数据列表?

在Liferay-portlet.xml中的任何动态数据portlet定义中,我都找不到
声明。因此,您需要创建一个EXT插件,该插件具有1)用于DDL记录的索引器类,以及2)用于portlet 169的liferay-portlet.xml更新为
。成功完成此操作后,您必须更新搜索portlet的显示设置,如上所述,并在下面的列表中添加
com.liferay.portlet.dynamicdatamapping.model.DDMContent

{"facets": [
{
    "className": "com.liferay.portal.kernel.search.facet.AssetEntriesFacet",
    "data": {
        "frequencyThreshold": 1,
        "values": [
            "com.liferay.portlet.bookmarks.model.BookmarksEntry",
            "com.liferay.portlet.blogs.model.BlogsEntry",
            "com.liferay.portlet.calendar.model.CalEvent",
            "com.liferay.portlet.documentlibrary.model.DLFileEntry",
            "com.liferay.portlet.journal.model.JournalArticle",
            "com.liferay.portlet.messageboards.model.MBMessage",
            "com.liferay.portlet.wiki.model.WikiPage",
            "com.liferay.portal.model.User",
        "com.liferay.portlet.dynamicdatamapping.model.DDMContent"
        ]
    },
...
...
这是一种高层次的方法。你需要从这里把这些点连接起来。希望这有帮助


(如果您想知道为什么不改用钩子?原因:因为钩子还不支持覆盖liferay-portlet.xml,如前所述)

您可以钩住main_search.jspf并将DDLRecord类添加到searchContext.getEntryClassNames()数组中。这样,搜索portlet也将开始搜索DDL记录。很可能您需要创建一个定制的DDLRecordIndexPostProcessor,因为为DDLRecord提供的摘要不是很好(覆盖postProcessSummary方法)