source: sandbox/expresso-solr/expressoMail1_2/solrclient/examples/2.1.5.6-grouping-by-field.php @ 7588

Revision 7588, 1.4 KB checked in by adir, 11 years ago (diff)

Ticket #000 - Adicionando a integracao de buscas com Solr na base a ser isnerida na comunidade

Line 
1<?php
2
3require('init.php');
4htmlHeader();
5
6// create a client instance
7$client = new Solarium_Client($config);
8
9// get a select query instance
10$query = $client->createSelect();
11$query->setRows(50);
12
13// get grouping component and set a field to group by
14$groupComponent = $query->getGrouping();
15$groupComponent->addField('inStock');
16// maximum number of items per group
17$groupComponent->setLimit(3);
18// get a group count
19$groupComponent->setNumberOfGroups(true);
20
21// this executes the query and returns the result
22$resultset = $client->select($query);
23
24$groups = $resultset->getGrouping();
25foreach($groups AS $groupKey => $fieldGroup) {
26
27    echo '<h1>'.$groupKey.'</h1>';
28    echo 'Matches: '.$fieldGroup->getMatches().'<br/>';
29    echo 'Number of groups: '.$fieldGroup->getNumberOfGroups();
30
31    foreach($fieldGroup AS $valueGroup) {
32
33        echo '<h2>'.(int)$valueGroup->getValue().'</h2>';
34
35        foreach($valueGroup AS $document) {
36           
37            echo '<hr/><table>';
38
39            // the documents are also iterable, to get all fields
40            foreach($document AS $field => $value)
41            {
42                // this converts multivalue fields to a comma-separated string
43                if(is_array($value)) $value = implode(', ', $value);
44
45                echo '<tr><th>' . $field . '</th><td>' . $value . '</td></tr>';
46            }
47
48            echo '</table>';
49        }
50    }
51}
52
53htmlFooter();
Note: See TracBrowser for help on using the repository browser.