0

在 Liferay 6.2 中,可以Indexable在动态数据列表定义的字段上设置选项,从而使它们可搜索(如 Liferay 6.2 文档中所述

我想在我的搜索中包含 DDL 记录并且必须使用 Liferay 6.1。我想知道,最好的方法是什么。

现在我已经研究了自定义搜索,但没有提到动态数据列表作为选项。

我还查看了Creating an Indexer Post-Processor hook,但如果我理解正确,它只能更改现有的索引进程。

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

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

4

2 回答 2

1

我在 liferay-portlet.xml 的任何动态数据 portlet 定义中都找不到<indexer-class>声明。因此,您需要创建一个 EXT 插件,该插件具有 1) 用于 DDL 记录的 Indexer 类和 2) 使用<indexer-class>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,如此所述)

于 2014-03-03T07:16:29.917 回答
0

您可以挂钩 main_search.jspf 并将 DDLRecord 类添加到 searchContext.getEntryClassNames() 数组。这样,搜索 Portlet 也将开始在 DDLRecords 上进行搜索。您很可能需要创建一个自定义 DDLRecordIndexPostProcessor,因为为 DDLRecord 提供的摘要并不是很好(覆盖 postProcessSummary 方法)。

于 2016-01-20T08:27:51.410 回答