Hybris:如何从Solr结果中排除Facet值

时间:2015-09-15 16:42:30

标签: solr hybris

Hybris 5.2

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

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

我认为有两种选择

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

例如

            List<String> colorList = getAllColorsExceptRed(); //Get all colors except red
            for(String color : colorList) {
                  searchQuery.addFacetValue("color", color);
            }

这将添加一个颜色SolrIndexedProperty的过滤器,并将解决问题。

但我并不好奇这种做法。

选项2:从Solr搜索结果中排除红色属性,而不是对所有颜色应用过滤器。

Solr Query就像这样..

            q= *:* AND -color_string:red
            //in case of multiple color exclude
            q= *:* AND -color_string: (red white)

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

有人知道如何在Hybris中使用service / method / searchQuery实现此查询(q= *:* AND -color_string:red)吗?

2 个答案:

答案 0 :(得分:2)

所以经过一些尝试,我得到了解决方案。

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

final String colors = "red white"; // List we can get from property file as well
searchQuery.addRawQuery("-color_string:(" + colors + ")",Operator.AND);

这使它有效!!

答案 1 :(得分:0)

SolrIndexedProperty具有属性includeInResponse,如果将其设置为false,则不会在结果中发送。