Grouping results by fields
Result grouping is a feature where results are clubbed together based on certain criteria. Solr provides us grouping based on field or based on queries. Let us search for all books and group results based on author name and genre. Grouping should be done on non-tokenized fields as the grouping output makes more sense for the complete field value rather than individual tokens. The non-tokenized string fields for author name and genre are author_s
and genre_s
. Why? Remember we discussed a concept known as dynamic fields in Chapter 2, Inserting, Updating, and Deleting Documents from Solr. The dynamic fields of type *_s
is defined as string
as shown in the following code, which is not tokenized in Solr:
<dynamicField name="*_s" type="string" indexed="true" stored="true" />
We will have to get the grouping component and add the fields we need to group by as shown in the following query:
$grp = $query->getGrouping(); $grp->addField('author_s'); $grp...