使用Querybuilder从全文本搜索父路径中排除子路径,或者从XPATH / JCR SQL2查询中获取搜索结果摘录

问题描述

我想使用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()

有没有办法我可以使用JCR / sql2查询来摘录?

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

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

解决方法

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

没有path.exact = true

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

输出: enter image description here

with path.exact = true

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

输出: enter image description here

path.exact = true:如果匹配正确的真实路径,则为false包括所有后代。

有关querybuider api的其他谓词,请访问blog of Hashim Khan