lucene 使用Querybuilder从全文搜索父路径中排除子路径,或者从XPATH/JCR SQL 2查询中获取搜索命中摘录

fhg3lkii  于 2022-11-07  发布在  Lucene
关注(0)|答案(1)|浏览(149)

我想使用querybuilder从搜索路径中排除子节点路径
例如-父文件夹为/content/mysite/en
和子文件夹
/内容/mysite/中文/测试文件夹1
/内容/mysite/中文/测试文件夹2
我希望查询生成器编写查询以排除这些路径
我已经看过这个问题了-
AEM Query builder exclude a folder in search
但是对路径和p.not=true进行分组似乎没有按预期的方式工作
我知道使用查询构建器编写这样的查询有点棘手;所以我使用JCR/SQL 2查询-
使用

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对象自动创建的搜索摘录-

hit.getExcerpt()

那么是否有一种方法可以使用JCR/SQL 2查询来获取摘录呢?
或者有没有一种方法可以使用querybuilder构建排除子文件夹查询;这样我就可以从结果中得到摘录?这两种解决方案都能解决我的问题。
如果有人有使用querybuilder排除子文件夹查询的经验;或使用JCR/SQL 2查询建立搜索摘录;或任何其他意见/建议;如能提供帮助,将不胜感激

flseospp

flseospp1#

下面是一个例子
没有路径。exact=true

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

输出:

使用路径.exact=true

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

输出:

路径.精确=真:如果为true,则匹配精确路径,如果为false,则包括所有后代。
有关querybuider api上的其他 predicate ,请访问blog of Hashim Khan

相关问题