1

我想使用 querybuilder 从搜索路径中排除子节点路径

例如 - 父文件夹是 /content/mysite/en

和子文件夹是

/content/mysite/en/testfolder1

/content/mysite/en/testfolder2

我希望查询生成器编写查询以排除这些路径

我已经看过这个问题了-

AEM 查询构建器在搜索中排除文件夹

但是分组路径和 p.not=true 似乎没有按预期工作

我知道使用查询生成器编写这样的查询有点棘手;所以我正在使用 JCR/SQL2 查询 -

使用

SELECT * FROM [cq:Page] 
WHERE ISDESCENDANTNODE(page,'/content/mysite/en') 
AND CONTAINS(*, 'fulltext') 
AND NOT ISDESCENDANTNODE(page, '/content/mysite/en/testfolder1') 
AND NOT ISDESCENDANTNODE(page, '/content/mysite/en/testfolder2')

但现在的问题是,我们还想要由 querybuilder api 的 SearchResult 的命中对象自动创建的搜索摘录 -

hit.getExcerpt()

那么有没有办法可以使用 JCR/SQL2 查询来获取摘录?

或者有没有一种方法可以使用 querybuilder 构建排除子文件夹查询;这样我就可以从结果中摘录?两种解决方案都可以解决我的问题。

如果有人有使用 querybuilder 排除子文件夹查询的经验;或使用 JCR/SQL2 查询构建搜索摘录;或本案的任何其他想法/建议;帮助将不胜感激

4

1 回答 1

1

试试 path.exact=true 下面是一个例子

没有 path.exact=true

type=cq:Page
path=/content/wkndmuzik/us/en

输出: 在此处输入图像描述

使用 path.exact=true

type=cq:Page
path=/content/wkndmuzik/us/en
path.exact=true

输出: 在此处输入图像描述

path.exact=true :如果匹配 true 确切路径,如果 false 则包括所有后代。

有关 querybuider api 的其他谓词,请访问Hashim Khan 的博客

于 2020-11-11T03:48:26.800 回答