Результаты группировки Solr/SolrNet
Я использую Solr для каталога продуктов, созданного на asp.net с solrnet, и пока все работает довольно хорошо. Мне нужно расширить результаты поиска, добавив в него некоторые параметры группировки.
Сначала я объясню, как выглядит схема:
<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
Но когда я показываю эти результаты, мне нужно показывать продукты с именами групп (или идентификаторами) поверх результатов по названию группы. И продукты, которые не принадлежат группе, будут перечислены сразу после групп.
Так что мои результаты должны выглядеть так:
Group Name 1
Group Name 2
Product E
Product F
На самом деле мне нужно также реализовать нумерацию страниц, иными словами, когда кто-то ищет какой-либо продукт, если продукты содержат названия групп, я перечисляю их в верхней части результатов и рядом с другими продуктами.
Это вообще возможно? Если это возможно, что мне нужно сделать. Я уже читал о FieldCollapsing в Solr, но до сих пор не знаю, правильный ли это путь или нет http://wiki.apache.org/solr/FieldCollapsing
1 ответ
Да, если вы хотите группировать по всему индексу, вам нужна функция свертывания полей. Поддержка SolrNet для этого в настоящее время не работает, так как эта функция не реализована в Solr и сильно изменилась со времени первой реализации в SolrNet. См. http://code.google.com/p/solrnet/issues/detail?id=127 для получения подробной информации и обновлений.