在SearchFilterQueryData中使用OR运算符构建SOLR过滤器查询

2020-09-05 00:54发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 在CategoryP...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

在CategoryPageController中搜索期间,我试图修改SOLR查询并添加一些过滤器参数(大约4个过滤器参数)和类似示例:

 最终SearchFilterQueryData searchNameFilterQuery = new SearchFilterQueryData();
  searchNameFilterQuery.setKey(" name");
  searchNameFilterQuery.setValues(new HashSet <>
    (Collections.singletonList(queryData.get(" name")))));
  searchNameFilterQuery.setOperator(FilterQueryOperator.OR);

  

并将其添加到this.searchQueryData.setFilterQueries列表中。

现在正在形成查询,

yq = :&q = {!boost}(%2B {!lucene + v%3D $ yq})&fq = allCategories_string_mv:1&fq = gskProductAvailability_string_mv:ACTIVE&fq = code_string:ACLOV&fq = name_usecscontexttext_zh_CN :ACLOV&fq = productIdentifier_text_mv:ACLOV

因此,当前查询为每个要搜索的属性添加一个 fq 参数,但是我想在此处使用OR条件,例如fq =(gskProductAvailability_string_mv:ACTIVE OR code_string:ACLOV OR name_usecscontext_en_us_text:ACLOV OR productIdentifier_text_mv:ACLOV

如何通过SearchFilterQueryData或类似功能启用此功能? 有人遇到过类似的事情吗?

关于病毒,

6条回答
Cikesha
2020-09-05 01:04

您好,您可以使用SolrQuery对象而非开箱即用的类Hybris进行此操作。 Solr提供了此功能,因此您必须直接将这些条件设置为SolrQuery类。 我可以为您提供方法。

假设您使用的是6.x

  • 步骤1-扩展DefaultFacetSearchStrategy/AbstractFacetSearchStrategy并覆盖

  • 步骤2-覆盖公共SearchResult search()。

  • 步骤3-这里的SolrQuery对象可用。

  • 步骤4-solrQuery.addFilterQuery(" gskProductAvailability_string_mv:ACTIVE或code_string:ACLOV或name_usecscontext_en_us_text:ACLOV或productIdentifier_text_mv:ACLOV")

这将起作用。 让我知道是否有帮助。

一周热门 更多>