问题描述
我想使用querybuilder从搜索路径中排除子节点路径
例如-父文件夹为/ content / mysite / en
和子文件夹是
/ content / mysite / en / testfolder1
/ content / mysite / en / testfolder2
我已经看了这个问题-
AEM Query builder exclude a folder in search
但是对路径和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()
或者有一种方法可以使用querybuilder构建排除子文件夹查询;这样我就可以从结果中摘录?两种解决方案都可以解决我的问题。
如果任何人都有使用querybuilder排除子文件夹查询的经验;或使用JCR / sql2查询构建搜索摘录;或与此案有关的其他任何想法/建议;帮助将不胜感激
解决方法
尝试path.exact = true下面是一个示例
没有path.exact = true
type=cq:Page
path=/content/wkndmuzik/us/en
with path.exact = true
type=cq:Page
path=/content/wkndmuzik/us/en
path.exact=true
path.exact = true:如果匹配正确的真实路径,则为false包括所有后代。
有关querybuider api的其他谓词,请访问blog of Hashim Khan