为价格启用Solr统计

2020-09-24 15:40发布

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

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


嗨,

我想要索引价格字段的最小值和最大值。

我知道使用Solr Stats组件可以做到这一点,因此我需要将这两个参数添加到Solr查询中:

  stats = true&stats.field = priceValue_chf_double

  

除了通过使用自定义方法扩展SearchSolrQueryPopulator将此原始参数添加到SolrQuery之外,是否有更好的方法来启用Solr Stats Component? 也许是通过春季?

 公共类OccSearchSolrQueryPopulator 
          扩展SearchSolrQueryPopulator  {
     
      私有静态最终字符串SOLR_STATS =" stats";
      私有静态最终字符串SOLR_STATS_VALUE =" true";
      私有静态最终字符串SOLR_STATS_FIELD =" stats.field";
      受保护的静态最终字符串SOLR_STAT_INFO_PRICE_CHF =" priceValue_chf_double";
     
      @Override
      公共无效人口(
              最终的SearchQueryPageableData 源,
              最终的SolrSearchRequest 目标){
         
          super.populate(来源,目标);
          addStats(target);
      }
     
    /**
       *添加Solr统计
       *
       * @参数目标
       */
      受保护的无效addStats(最终SolrSearchRequest 目标){
         //添加最低/最高价格的统计信息
          target.getSearchQuery()。addRawParam(SOLR_STATS,SOLR_STATS_VALUE);
          target.getSearchQuery()。addRawParam(SOLR_STATS_FIELD,SOLR_STAT_INFO_PRICE_CHF);
      }
  }

  

还有没有更好的方法来从SolrSearchResult检索统计信息? 目前,我使用此方法:

 /**
   *在价格方面设置统计最低和最高价格
   *
   * @参数facetData
   * @paolrSearchResult
   */
  私人无效setMinMaxPrice(final FacetData  facetData,最终SearchResult solrSearchResult){
      最终QueryResponse queryResponse = solrSearchResult.getSolrObject();
     
      if(queryResponse!= null && queryResponse.getFieldStatsInfo()!= null){
          facetData.setMaxPrice((Double)queryResponse.getFieldStatsInfo()。get(OccSearchSolrQueryPopulator.SOLR_STAT_INFO_PRICE_CHF).getMax());
          facetData.setMinPrice((Double)queryResponse.getFieldStatsInfo()。get(OccSearchSolrQueryPopulator.SOLR_STAT_INFO_PRICE_CHF).getMin());
      }
  }


  

Solr Stats组件指南: https: //cwiki.apache.org/confluence/display/solr/The+Stats+Component

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

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


嗨,

我想要索引价格字段的最小值和最大值。

我知道使用Solr Stats组件可以做到这一点,因此我需要将这两个参数添加到Solr查询中:

  stats = true&stats.field = priceValue_chf_double

  

除了通过使用自定义方法扩展SearchSolrQueryPopulator将此原始参数添加到SolrQuery之外,是否有更好的方法来启用Solr Stats Component? 也许是通过春季?

 公共类OccSearchSolrQueryPopulator 
          扩展SearchSolrQueryPopulator  {
     
      私有静态最终字符串SOLR_STATS =" stats";
      私有静态最终字符串SOLR_STATS_VALUE =" true";
      私有静态最终字符串SOLR_STATS_FIELD =" stats.field";
      受保护的静态最终字符串SOLR_STAT_INFO_PRICE_CHF =" priceValue_chf_double";
     
      @Override
      公共无效人口(
              最终的SearchQueryPageableData 源,
              最终的SolrSearchRequest 目标){
         
          super.populate(来源,目标);
          addStats(target);
      }
     
    /**
       *添加Solr统计
       *
       * @参数目标
       */
      受保护的无效addStats(最终SolrSearchRequest 目标){
         //添加最低/最高价格的统计信息
          target.getSearchQuery()。addRawParam(SOLR_STATS,SOLR_STATS_VALUE);
          target.getSearchQuery()。addRawParam(SOLR_STATS_FIELD,SOLR_STAT_INFO_PRICE_CHF);
      }
  }

  

还有没有更好的方法来从SolrSearchResult检索统计信息? 目前,我使用此方法:

 /**
   *在价格方面设置统计最低和最高价格
   *
   * @参数facetData
   * @paolrSearchResult
   */
  私人无效setMinMaxPrice(final FacetData  facetData,最终SearchResult solrSearchResult){
      最终QueryResponse queryResponse = solrSearchResult.getSolrObject();
     
      if(queryResponse!= null && queryResponse.getFieldStatsInfo()!= null){
          facetData.setMaxPrice((Double)queryResponse.getFieldStatsInfo()。get(OccSearchSolrQueryPopulator.SOLR_STAT_INFO_PRICE_CHF).getMax());
          facetData.setMinPrice((Double)queryResponse.getFieldStatsInfo()。get(OccSearchSolrQueryPopulator.SOLR_STAT_INFO_PRICE_CHF).getMin());
      }
  }


  

Solr Stats组件指南: https: //cwiki.apache.org/confluence/display/solr/The+Stats+Component

付费偷看设置
发送
1条回答
渐行渐远_HoldOn
1楼-- · 2020-09-24 16:17

嗨,帕特里克,

您能调查这个问题并提供解决方案吗?

https://answers.sap.com/questions/12767326/view.html

谢谢...

一周热门 更多>