Liferay 搜索匹配附件术语的结构化网页内容

Liferay Search over structured webcontent matching attachment's term

我们有一个带有“文档和媒体”字段的网页内容结构“S”。

我们在之前的结构«S»的基础上创建了一个名为«W»的网页内容,其中包含一个名为“a”的word文件附件,其中包含“hello”文本。

我们知道 lucene/ElasticSearch 正在索引附件的内容,例如 word 或 pdf 文件。

所以我们进行了一个 lucene 搜索(使用 booleanQuery,在 journalArticle 上过滤)来检索 S webcontent 以匹配“hello”搜索词。

但我们看到了 lucene,在 journalArticle 上进行过滤,return 一个 json 类对象,其中包含这些数据:

"ddm__keyword__87940__attachements_en_US":[ {\"groupId\":\"115863\",\"title\":\"a.word\",\"type\":\"document\",\"uuid\":\ "dffd1d3d-8b78-a64c-4d0c-8d004d24cb75\"}]

它只有对 DLFileEntry 对象的引用。

有没有一种方法,只需一个请求,就可以检索与单词附件匹配的期刊文章?

我们看到 Liferay 提出了“索引器 Post 处理器”,它可以帮助我们将 DLFileEntry 数据存储在我们的 web 内容的新字段中,但 DLFileEntry 索引是异步的。

我们能做什么?

如果您不坚持在 ES 级别进行单个查询,我会使用命中 post 个处理器来解决它。

https://dev.liferay.com/de/develop/tutorials/-/knowledge_base/7-0/introduction-to-liferay-search#hitsprocessor

我会查询文件中的单词,然后如果有命中,我会使用 post 处理器将结果增强为 add/replace 潜在的 Web 内容条目。

我们找到了解决方案:

  1. 我们为 JournalArticle class 创建一个挂钩索引器 post 处理器。
  2. 在索引器 post 处理器中,我们检索 dlFileEntry 和索引 它通过 document.addFile().
  3. 在我们的 portlet 中,我们现在可以使用 booleanQuery (addterm) 和 IndexSearcherHelperUtil.search

唯一的缺点是文件内容被索引了两次(原生使用 dlFileEntry,现在使用 journalArticle)