在Solr中排除构面值

2020-08-27 15:37发布

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

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


我正在做一些分析,以从Solr搜索中排除某些Facet值,以便这些产品不会出现在搜索结果中。

假设我有很多彩色T恤(不知道有多少个),有人告诉我在搜索结果中不要显示红色T恤。 有两种选择

选项1:我必须在系统中获取所有T恤的颜色,然后在Solr结果中添加一个滤镜

 例如:

                 List  colorList = getAllColors(); //获取除红色外的所有颜色
                 for(字符串颜色:colorList){
                       searchQuery.addFacetValue(" color",color);
                 }
  

这将添加一个颜色为SolrIndexedProperty的滤镜,它将解决该问题。

但是我并不奇怪采用这种方法。

选项2:从Solr搜索结果中排除红色属性,而不是对所有颜色应用滤镜。 Solr Query就像这样..

  q = *:* AND -color_string:red
                //如果有多种颜色,则排除
                 q = *:* AND -color_string:(红色白色)

  

这将从结果中排除红色T恤。 但是我找不到应该选择哪种服务或方法来进行这样的查询。

有人知道如何通过service/method/searchQuery实现此查询(q = : AND -color_string:red)吗?

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

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


我正在做一些分析,以从Solr搜索中排除某些Facet值,以便这些产品不会出现在搜索结果中。

假设我有很多彩色T恤(不知道有多少个),有人告诉我在搜索结果中不要显示红色T恤。 有两种选择

选项1:我必须在系统中获取所有T恤的颜色,然后在Solr结果中添加一个滤镜

 例如:

                 List  colorList = getAllColors(); //获取除红色外的所有颜色
                 for(字符串颜色:colorList){
                       searchQuery.addFacetValue(" color",color);
                 }
  

这将添加一个颜色为SolrIndexedProperty的滤镜,它将解决该问题。

但是我并不奇怪采用这种方法。

选项2:从Solr搜索结果中排除红色属性,而不是对所有颜色应用滤镜。 Solr Query就像这样..

  q = *:* AND -color_string:red
                //如果有多种颜色,则排除
                 q = *:* AND -color_string:(红色白色)

  

这将从结果中排除红色T恤。 但是我找不到应该选择哪种服务或方法来进行这样的查询。

有人知道如何通过service/method/searchQuery实现此查询(q = : AND -color_string:red)吗?

付费偷看设置
发送
5条回答
SAP小黑
1楼 · 2020-08-27 16:10.采纳回答

因此,经过一番尝试后,我得到了解决方案。

在searchQuery中,我们也可以添加Raw Query。 因此,我已经在addRawQuery方法中设置了查询。

 最终字符串颜色="红色白色"; //也可以从属性文件中获取列表
  searchQuery.addRawQuery(" *:* AND -color_string :(" +颜色+")");

  

这使它可行!

一只江湖小虾
2楼-- · 2020-08-27 16:24

您认为您可以使用Lucene语法吗? SOLR排除搜索结果

一只江湖小虾
3楼-- · 2020-08-27 16:05

其标准功能可在商业搜索模块,您甚至可以按类别重新配置方面可见性

SKY徐
4楼-- · 2020-08-27 16:25

您还可以将DefaultSolrQueryConverter#convertSolrQuery方法用作

solrQuery.addFilterQuery(queryString);//queryString(color_string:blue)用作过滤器查询。

粗暴的香蕉
5楼-- · 2020-08-27 16:26

在searchQuery中,我们也可以添加Raw Filter Query。 因此,我已经在addFilterRawQuery方法中设置了查询。

对于单个值

 searchQuery.addFilterRawQuery("-color_string :: red"); 

对于多个值

 searchQuery.addFilterRawQuery("-color_string :(红色白色)"); 

一周热门 更多>