【发布时间】:2015-04-20 07:37:04
【问题描述】:
我需要根据部分文本匹配来获取搜索结果。例如,如果产品下有一个节点说“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 示例中实现基于部分文本的搜索,同样的事情也可以正常工作。我应该在代码中进行哪些更改以根据部分节点名称匹配获得结果?
【问题讨论】:
标签: aem query-builder