我正在尝试使用 solr
中的动态字段开发过滤系统 . 这些动态字段可能因产品而异,并具有前缀 attribute_filter_
以帮助我识别过滤字段 . 因此,给定搜索查询,我希望基于这些动态字段获得分面结果 .
例如,我在 solr
中有3个产品作为文档
{ID:1, attribute_filter_color:"white", attribute_filter_brand:"Dell"}
{ID:2, attribute_filter_color:"red", attribute_filter_category:"electronics"}
{ID:3, attribute_filter_size:"mobiles", attribute_filter_brand:"samsung"}
当我的搜索查询与doc 1和doc2匹配时,我只想过滤器颜色,品牌和类别,因此facet字段是 attribute_filter_color
, attribute_filter_brand
和 attribute_filter_category
.
当我的搜索查询与doc 2和doc3匹配时,我想要过滤器颜色,大小,类别和品牌,因此facet字段是 attribute_filter_color
, attribute_filter_size
, attribute_filter_category
和 attribute_filter_brand
.
当我的搜索查询与doc 1和doc3匹配时,我想要过滤器颜色,品牌和大小,因此facet字段是 attribute_filter_color
, attribute_filter_brand
和 attribute_filter_size
.
这些过滤器总共可超过10 ^ 5个产品 . 这会产生另一个问题,即制作一个带有300个facet字段的 GET URL
,这可能超过 GET URL
的限制 .
这个jira ticket显示了正则表达式在这种情况下如何帮助 .
1 回答
我的解决方案是将字段名称索引到另一个字段,这样您也可以使用包含字段的文档
"facet_fields": ["attribute_filter_color","attribute_filter_brand"]
.在您的文档结果集中生成一个方面,然后在新查询中使用该结果来生成您所面临的字段的方面 -
facet_fields
字段将快速计算并返回 .