gpt4 book ai didi

aem - 如何在 CQ/AEM 中使用 Query Builder API 实现部分搜索文本的搜索

转载 作者:行者123 更新时间:2023-12-01 08:27:46 25 4
gpt4 key购买 nike

我需要根据部分文本匹配来获取搜索结果。例如,如果产品下有一个节点说“apple-iphone-6”并且用户在搜索框中输入“iphone”文本,我应该仍然能够获取结果。

我在 querybuilder 上尝试了以下查询,它成功了:

http://localhost:4502/bin/querybuilder.json?path=/etc/commerce/products&type=nt:unstructured&nodename=*iphone*

但是,如何以编程方式为 *iphone* 部分实现这一点?我正在使用如下谓词创建查询

        String searchTerm = "iphone";
map.put("path", "/etc/commerce/products");
map.put("type", "nt:unstructured");
map.put("nodename", searchTerm);

Query query = queryBuilder.createQuery(PredicateGroup.create(map), session);
SearchResult result = query.getResult();

但我没有得到任何结果,原因是节点名称(apple-iphone-6)与搜索词(iphone)不完全匹配。但是,如果我将 * 附加到 nodename 值,然后在 querybuilder 示例中实现基于部分文本的搜索,同样的事情也可以正常工作。我应该在代码中进行哪些更改以根据部分节点名称匹配获得结果?

最佳答案

您已经自己找到了解决方案,NodenamePredicateEvaluator接受通配符参数,因此您需要用通配符包围搜索词,例如:

String searchTerm = "iphone";
...
map.put("nodename", "*" + searchTerm + "*");

关于aem - 如何在 CQ/AEM 中使用 Query Builder API 实现部分搜索文本的搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29741814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com