Результаты группировки 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 для получения подробной информации и обновлений.

Другие вопросы по тегам