我将 Solr 用于使用 solrnet 在 asp.net 上构建的产品目录,到目前为止一切正常。我需要通过添加一些分组选项来扩展搜索结果。
首先,我将解释架构的外观:
<field name="product_id" type="string" indexed="true" stored="true" required="true" />
<field name="name" type="string" indexed="true" stored="true"/>
<field name="merchant" type="string" indexed="true" stored="true"/>
<field name="merchant_id" type="int" indexed="false" stored="true"/>
<field name="merchant_logo" type="string" indexed="false" stored="true"/>
<field name="brand" type="string" indexed="true" stored="true"/>
<field name="brand_id" type="int" indexed="false" stored="true"/>
<field name="group_id" type="int" indexed="true" stored="true"/>
<field name="group_name" type="string" indexed="true" stored="true"/>
<field name="has_group" type="boolean" indexed="true" stored="true"/>
因此,如您所见,上面的产品有一个“group_id”和“group name” ,我的架构上还有一个名为“has group”的布尔标志。
以下是产品结果的一些示例
Product A – group id 1 - group Name 1 – has group true
Product B – group id 1 - group Name 1 – has group true
Product C – group id 2 - group Name 2 – has group true
Product D – group id 2 - group Name 2 – has group true
Product E – has group false
Product F – has group false
但是当我显示这些结果时,我需要在结果顶部按其组名显示带有组名(或 ID)的产品。不属于一个组的产品将列在组的后面。
所以我的结果应该是这样的:
Group Name 1
Group Name 2
Product E
Product F
事实上,我也需要实现分页,所以换句话说,当有人搜索某个产品时,如果产品包含组名,我会将它们列在结果的顶部,然后是其他产品。
这甚至可能吗?如果可能的话,我需要做什么。我已经在 solr 中阅读了有关 FieldCollapsing 的信息,但我仍然不知道这是否是正确的方法http://wiki.apache.org/solr/FieldCollapsing