我有一個基於部分文本匹配獲取搜索結果的需求。例如,如果產品下有一個節點說「apple-iphone-6」,並且用戶在搜索框中輸入了「iphone」文本,我仍然可以獲取結果。如何在CQ/AEM中使用查詢生成器API實現部分搜索文本的搜索
我試過的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();
創建一個查詢,但我沒有得到任何結果,原因是,從節點名稱(蘋果iphone-6)不完全搜索詞(iphone)相匹配。 但是,如果我將*附加到nodename值,然後在querybuilder示例中實現部分基於文本的搜索,同樣的事情就可以正常工作。我應該在代碼中做些什麼改變以獲得基於部分節點名稱匹配的結果?
是啊,我懷疑我必須做一些修改和INFACT嘗試添加t條他*通配符,但以不同的方式解決問題。這工作正常。感謝您的快速解決方案。 –