2.1.5.1.5-facet-pivot.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. require(__DIR__.'/init.php');
  3. htmlHeader();
  4. // create a client instance
  5. $client = new Solarium\Client($config);
  6. // get a select query instance
  7. $query = $client->createSelect();
  8. // get the facetset component
  9. $facetSet = $query->getFacetSet();
  10. // create two facet pivot instances
  11. $facet = $facetSet->createFacetPivot('cat-popularity-instock');
  12. $facet->addFields('cat,popularity,inStock');
  13. $facet->setMinCount(0);
  14. $facet = $facetSet->createFacetPivot('popularity-cat');
  15. $facet->addFields('popularity,cat');
  16. // this executes the query and returns the result
  17. $resultset = $client->select($query);
  18. // display the total number of documents found by solr
  19. echo 'NumFound: '.$resultset->getNumFound();
  20. // display facet results
  21. $facetResult = $resultset->getFacetSet()->getFacet('cat-popularity-instock');
  22. echo '<h3>cat &raquo; popularity &raquo; instock</h3>';
  23. foreach ($facetResult as $pivot) {
  24. displayPivotFacet($pivot);
  25. }
  26. $facetResult = $resultset->getFacetSet()->getFacet('popularity-cat');
  27. echo '<h3>popularity &raquo; cat</h3>';
  28. foreach ($facetResult as $pivot) {
  29. displayPivotFacet($pivot);
  30. }
  31. htmlFooter();
  32. /**
  33. * Recursively render pivot facets
  34. *
  35. * @param $pivot
  36. */
  37. function displayPivotFacet($pivot)
  38. {
  39. echo '<ul>';
  40. echo '<li>Field: '.$pivot->getField().'</li>';
  41. echo '<li>Value: '.$pivot->getValue().'</li>';
  42. echo '<li>Count: '.$pivot->getCount().'</li>';
  43. foreach ($pivot->getPivot() as $nextPivot) {
  44. displayPivotFacet($nextPivot);
  45. }
  46. echo '</ul>';
  47. }