点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
在SOLR中,索引已在基础产品上完成。 在其他产品上,忠诚度积分得到管理。
创建了一个SOLR索引属性 pointsRequiredToPurchase ,该属性具有多值,可以容纳整数。 索引后,它具有如下值:
" pointsRequiredToPurchase_int_mv":[100,550]
在SOLR仪表板中,如果我执行查询 pointsRequiredToPurchase_int_mv:[500 TO *],我正在得到结果。
现在,当我通过SearchFilterQueryData传递此值时,它没有任何结果。
受保护的void setPointsFilter(ListlistSearchFilterQueryData,整数点){ StringBuffer sb = new StringBuffer(); sb.append(" [")。append(points).append(" TO *]"); 字符串pointsRange = sb.toString(); //奖励目录合格产品的条件 SearchFilterQueryData catalogEligibleQueryData = new SearchFilterQueryData(); catalogEligibleQueryData.setKey(" pointsRequiredToPurchase"); catalogEligibleQueryData.setOperator(FilterQueryOperator.AND); Set valueSet =新的HashSet <>(); valueSet.add(pointsRange); catalogEligibleQueryData.setValues(valueSet); listSearchFilterQueryData.add(catalogEligibleQueryData); }
随附的代码段。 添加此过滤器后,我没有任何结果。
在后处理器中,我可以看到如下查询:
yq = *:*&q = {!boost}(%2B {!lucene + v%3D $ yq})&fq = isRewardCatalogEligible_boolean:true&fq = inStockFlag_boolean:true&fq = pointsRequiredToPurchase_int_mv:\ [500 \ + TO \ + \ * \]&sort = mostSoldAllTime_int + desc☆t = 0&rows = 20
你能告诉我我做错什么了吗?
谢谢
我可以在最终查询中看到其他过滤器,例如isRewardCatalogEligible_boolean,inStockFlag_boolean。 要交叉验证结果,请在SOLR仪表板上执行完整过滤器查询,然后查看是否得到任何结果。
如果没有,则编辑查询以查看哪个字段得出零结果。
如果我执行查询isRewardCatalogEligible_boolean:true AND inStockFlag_boolean:true AND pointsRequiredToPurchase_int_mv:[500 SOLr信息中心中的TO *]。
虽然我没有在ProductSearchPageData中获得结果,但我认为这是由于内部添加了" \"和" +"字符所致。
有什么主意吗?
这里有任何帮助。.如何代替+应用到?
嗨, Manish Yadav
我可以看到您已自定义查询,Hybris OOTB功能通过以下util类对特殊字符进行了转义:
有两种方法可以解决pointsRequiredToPurchase_int_mv的问题:\ [500 \ + TO \ + \ * \]
解决方案1:
解决方案2:覆盖DefaultFacetSearchStrategy并重写search method()并将条件直接添加到SolrQuery对象中。
请参见以下示例代码段:
这些解决方案正在工作,并且肯定会为您提供帮助。 假设您使用的是SAP Commerce 6.7或更高版本。 让我知道是否有帮助
一周热门 更多>