Hybris:如何从 Solr 结果中排除 Facet Value
Hybris : How to exclude Facet Value from the Solr Result
Hybris 5.2
我正在做一些分析以从 Solr 搜索中排除 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 查询会像这样..
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)
吗?
经过反复尝试,我得到了解决方案。
在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);
这让它起作用了!!
SolrIndexedProperty 有属性,includeInResponse 如果你设置为false,它不会在结果中发送。
Hybris 5.2
我正在做一些分析以从 Solr 搜索中排除 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 查询会像这样..
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)
吗?
经过反复尝试,我得到了解决方案。
在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);
这让它起作用了!!
SolrIndexedProperty 有属性,includeInResponse 如果你设置为false,它不会在结果中发送。