<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>hierarchical &#8211; Solr.pl</title>
	<atom:link href="https://solr.pl/en/tag/hierarchical-2/feed/" rel="self" type="application/rss+xml" />
	<link>https://solr.pl/en/</link>
	<description>All things to be found - Blog related to Apache Solr &#38; Lucene projects - https://solr.apache.org</description>
	<lastBuildDate>Tue, 10 Nov 2020 13:18:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>Hierarchical faceting &#8211; Pivot facets in trunk</title>
		<link>https://solr.pl/en/2010/10/25/hierarchical-faceting-pivot-facets-in-trunk/</link>
					<comments>https://solr.pl/en/2010/10/25/hierarchical-faceting-pivot-facets-in-trunk/#respond</comments>
		
		<dc:creator><![CDATA[Rafał Kuć]]></dc:creator>
		<pubDate>Mon, 25 Oct 2010 12:17:29 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[4.0]]></category>
		<category><![CDATA[facet]]></category>
		<category><![CDATA[grouping]]></category>
		<category><![CDATA[hierarchical]]></category>
		<category><![CDATA[pivot]]></category>
		<category><![CDATA[solr]]></category>
		<category><![CDATA[trunk]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=90</guid>

					<description><![CDATA[In a large number of implementations which I took part in, sooner or later, the question arise &#8211; what can we do to get faceting as a tree structure. Of course there some tricks for that, however, their use was]]></description>
										<content:encoded><![CDATA[<p>In  a large number of implementations which I took part in, sooner or  later, the question arise &#8211; what can we do to get faceting as a tree  structure. Of  course there some tricks for that, however, their use was to modify the  data and appropriate processing of the results on application side. It was not particularly functional, nor especially comfortable. However,  a few days ago Solr version 4.0 has been enhanced with code that is  marked as <a href="https://issues.apache.org/jira/browse/SOLR-792" target="_blank" rel="noopener noreferrer">Solr-792</a> in the system JIRA. Let&#8217;s see in this case, how to  get the faceting results as a tree.</p>
<p><span id="more-90"></span></p>
<p>Important Note &#8211; at this point this functionality is only available in version 4.0, Solr, which is the development version. To use this version you need to download the code from trunk of Lucene/Solr SVN repository.</p>
<h3>A few words at the beginning</h3>
<p>In many projects in which I had the opportunity to deal with there was a need to use a hierarchical faceting. One  of the simplest example is the requirement of showing the cities in the  provinces and the number of documents in both provinces, as well as in  various cities. Till recently, with no changes in the structure of data, it was impossible to achieve such functionality. Now it is possible <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h3>Indexing</h3>
<p>In  order not to unnecessarily complicate the described functionality I  decided to use the sample XML documents that are available in the  directory <em>/exampledocs</em> of the example deployment. I also didn&#8217;t modify the<em> schema.xml </em>file, or <em>solrconfig.xml</em>, so that configurations are standard. So thats all when it comes to configuration. So we can start the indexing process (I called the command from the directory <em>$SOLR_HOME/exampledocs/</em>):
</p>
<pre class="brush:bash">./post.sh *.xml</pre>
<p>After seeing several screens of information, and we have our data indexed.</p>
<h3>The mechanism</h3>
<p>It is not difficult to use hierarchical faceting. Solr creators gave us to use two additional parameters to the ones we already know:</p>
<ul>
<li> <em>facet.pivot</em> &#8211; list of comma-separated fields, which shows at which fields and in what order to calculate the structure,</li>
<li><em>facet.pivot.mincount</em> &#8211; the minimum number of documents there needs to be  to the result to be included in faceting results. The default value is 1.</li>
</ul>
<p>So let&#8217;s try it.</p>
<h3>Queries</h3>
<p>At the beginning of the try with two fields. I  query for all the documents from the index and add the parameter  facet.pivot=cat,inStock to say Solr that I want to get the results of  the hierarchical faceting, where the first level of the hierarchy is the  cat field, and the second level is the inStock field. The query looks as follows:
</p>
<pre class="brush:xml">http://localhost:8983/solr/select/?q=*:*&amp;facet=true&amp;facet.pivot=cat,inStock</pre>
<p>To shorten the listing I omitted the part responsible for the search results along with a header.
</p>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;response&gt;
.
.
.
&lt;result name="response" numFound="19" start="0"/&gt;
&lt;lst name="facet_counts"&gt;
  &lt;lst name="facet_queries"/&gt;
  &lt;lst name="facet_fields"/&gt;
  &lt;lst name="facet_dates"/&gt;
  &lt;lst name="facet_ranges"/&gt;
  &lt;lst name="facet_pivot"&gt;
    &lt;arr name="cat,inStock"&gt;
      &lt;lst&gt;
        &lt;str name="field"&gt;cat&lt;/str&gt;
        &lt;str name="value"&gt;electronics&lt;/str&gt;
        &lt;int name="count"&gt;17&lt;/int&gt;
        &lt;arr name="pivot"&gt;
          &lt;lst&gt;
            &lt;str name="field"&gt;inStock&lt;/str&gt;
            &lt;bool name="value"&gt;true&lt;/bool&gt;
            &lt;int name="count"&gt;13&lt;/int&gt;
          &lt;/lst&gt;
          &lt;lst&gt;
            &lt;str name="field"&gt;inStock&lt;/str&gt;
            &lt;bool name="value"&gt;false&lt;/bool&gt;
            &lt;int name="count"&gt;4&lt;/int&gt;
          &lt;/lst&gt;
        &lt;/arr&gt;
      &lt;/lst&gt;
      &lt;lst&gt;
        &lt;str name="field"&gt;cat&lt;/str&gt;
        &lt;str name="value"&gt;memory&lt;/str&gt;
        &lt;int name="count"&gt;6&lt;/int&gt;
        &lt;arr name="pivot"&gt;
          &lt;lst&gt;
            &lt;str name="field"&gt;inStock&lt;/str&gt;
            &lt;bool name="value"&gt;true&lt;/bool&gt;
            &lt;int name="count"&gt;6&lt;/int&gt;
          &lt;/lst&gt;
        &lt;/arr&gt;
      &lt;/lst&gt;
      &lt;lst&gt;
        &lt;str name="field"&gt;cat&lt;/str&gt;
        &lt;str name="value"&gt;connector&lt;/str&gt;
        &lt;int name="count"&gt;2&lt;/int&gt;
        &lt;arr name="pivot"&gt;
          &lt;lst&gt;
            &lt;str name="field"&gt;inStock&lt;/str&gt;
            &lt;bool name="value"&gt;false&lt;/bool&gt;
            &lt;int name="count"&gt;2&lt;/int&gt;
          &lt;/lst&gt;
        &lt;/arr&gt;
      &lt;/lst&gt;
      &lt;lst&gt;
        &lt;str name="field"&gt;cat&lt;/str&gt;
        &lt;str name="value"&gt;graphics card&lt;/str&gt;
        &lt;int name="count"&gt;2&lt;/int&gt;
        &lt;arr name="pivot"&gt;
          &lt;lst&gt;
            &lt;str name="field"&gt;inStock&lt;/str&gt;
            &lt;bool name="value"&gt;false&lt;/bool&gt;
            &lt;int name="count"&gt;2&lt;/int&gt;
          &lt;/lst&gt;
        &lt;/arr&gt;
      &lt;/lst&gt;
      &lt;lst&gt;
        &lt;str name="field"&gt;cat&lt;/str&gt;
        &lt;str name="value"&gt;hard drive&lt;/str&gt;
        &lt;int name="count"&gt;2&lt;/int&gt;
        &lt;arr name="pivot"&gt;
          &lt;lst&gt;
            &lt;str name="field"&gt;inStock&lt;/str&gt;
            &lt;bool name="value"&gt;true&lt;/bool&gt;
            &lt;int name="count"&gt;2&lt;/int&gt;
          &lt;/lst&gt;
        &lt;/arr&gt;
      &lt;/lst&gt;
      &lt;lst&gt;
        &lt;str name="field"&gt;cat&lt;/str&gt;
        &lt;str name="value"&gt;monitor&lt;/str&gt;
        &lt;int name="count"&gt;2&lt;/int&gt;
        &lt;arr name="pivot"&gt;
          &lt;lst&gt;
            &lt;str name="field"&gt;inStock&lt;/str&gt;
            &lt;bool name="value"&gt;true&lt;/bool&gt;
            &lt;int name="count"&gt;2&lt;/int&gt;
          &lt;/lst&gt;
        &lt;/arr&gt;
      &lt;/lst&gt;
      &lt;lst&gt;
        &lt;str name="field"&gt;cat&lt;/str&gt;
        &lt;str name="value"&gt;search&lt;/str&gt;
        &lt;int name="count"&gt;2&lt;/int&gt;
        &lt;arr name="pivot"&gt;
          &lt;lst&gt;
            &lt;str name="field"&gt;inStock&lt;/str&gt;
            &lt;bool name="value"&gt;true&lt;/bool&gt;
            &lt;int name="count"&gt;2&lt;/int&gt;
          &lt;/lst&gt;
        &lt;/arr&gt;
      &lt;/lst&gt;
      &lt;lst&gt;
        &lt;str name="field"&gt;cat&lt;/str&gt;
        &lt;str name="value"&gt;software&lt;/str&gt;
        &lt;int name="count"&gt;2&lt;/int&gt;
        &lt;arr name="pivot"&gt;
          &lt;lst&gt;
            &lt;str name="field"&gt;inStock&lt;/str&gt;
            &lt;bool name="value"&gt;true&lt;/bool&gt;
            &lt;int name="count"&gt;2&lt;/int&gt;
          &lt;/lst&gt;
        &lt;/arr&gt;
      &lt;/lst&gt;
    &lt;/arr&gt;
  &lt;/lst&gt;
&lt;/lst&gt;
&lt;/response&gt;</pre>
<p>The presentation of faceting results has changed in this case. For  each of the main level we have the markers defining the field (the tag  with the attribute <em>name=&#8221;field&#8221;</em>), value (the tag with the attribute <em> name=&#8221;value&#8221;</em>) and the number of documents (the tag with the attribute  <em>name=&#8221;count&#8221;</em>). Next there is the the second level hierarchy (tag with the attribute <em>name=&#8221;pivot&#8221;</em>). The second level contains the same elements as the first level &#8211; name, value and the number of documents with a given value.</p>
<p>Let&#8217;s see how this mechanism can deal with more levels of depth. To check that I run the following query:
</p>
<pre class="brush:xml">http://localhost:8983/solr/select/?q=*:*&amp;facet=true&amp;facet.pivot=cat,inStock,features</pre>
<p>I omitted the response header with the results, leaving the faceting results only.  In addition, due to the length of the faceting results I only show one level one level faceting:
</p>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;response&gt;
.
.
.
&lt;result name="response" numFound="19" start="0"/&gt;
&lt;lst name="facet_counts"&gt;
  &lt;lst name="facet_queries"/&gt;
  &lt;lst name="facet_fields"/&gt;
  &lt;lst name="facet_dates"/&gt;
  &lt;lst name="facet_ranges"/&gt;
  &lt;lst name="facet_pivot"&gt;
    &lt;arr name="cat,inStock,features"&gt;
      &lt;lst&gt;
        &lt;str name="field"&gt;cat&lt;/str&gt;
        &lt;str name="value"&gt;electronics&lt;/str&gt;
        &lt;int name="count"&gt;17&lt;/int&gt;
        &lt;arr name="pivot"&gt;
          &lt;lst&gt;
            &lt;str name="field"&gt;inStock&lt;/str&gt;
            &lt;bool name="value"&gt;true&lt;/bool&gt;
            &lt;int name="count"&gt;13&lt;/int&gt;
            &lt;arr name="pivot"&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;2&lt;/str&gt;
                &lt;int name="count"&gt;7&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;3&lt;/str&gt;
                &lt;int name="count"&gt;7&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;lcd&lt;/str&gt;
                &lt;int name="count"&gt;5&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;x&lt;/str&gt;
                &lt;int name="count"&gt;5&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;ca&lt;/str&gt;
                &lt;int name="count"&gt;4&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;latenc&lt;/str&gt;
                &lt;int name="count"&gt;4&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;tft&lt;/str&gt;
                &lt;int name="count"&gt;4&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;v&lt;/str&gt;
                &lt;int name="count"&gt;4&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;0&lt;/str&gt;
                &lt;int name="count"&gt;3&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;1&lt;/str&gt;
                &lt;int name="count"&gt;3&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;25&lt;/str&gt;
                &lt;int name="count"&gt;3&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;30&lt;/str&gt;
                &lt;int name="count"&gt;3&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;5&lt;/str&gt;
                &lt;int name="count"&gt;3&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;7&lt;/str&gt;
                &lt;int name="count"&gt;3&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;8&lt;/str&gt;
                &lt;int name="count"&gt;3&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;time&lt;/str&gt;
                &lt;int name="count"&gt;3&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;up&lt;/str&gt;
                &lt;int name="count"&gt;3&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;000&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;19&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;20&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;2336&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;27&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;275&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;6&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;75&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;activ&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;built&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;cach&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;color&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;flash&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;heat&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;heatspread&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;matrix&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;mb&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;ms&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;photo&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;resolut&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;seek&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;speed&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;spreader&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;unbuff&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;usb&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
            &lt;/arr&gt;
          &lt;/lst&gt;
          &lt;lst&gt;
            &lt;str name="field"&gt;inStock&lt;/str&gt;
            &lt;bool name="value"&gt;false&lt;/bool&gt;
            &lt;int name="count"&gt;4&lt;/int&gt;
            &lt;arr name="pivot"&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;0&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;1&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;16&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;2&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;20&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;3&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;9&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;90&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;adapt&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;car&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;clock&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;direct&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;directx&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;dual&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;dvi&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;express&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;gddr&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;ghz&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;gl&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;gpu&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;gpuvpu&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;hdtv&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;mb&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;mhz&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;open&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;opengl&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;out&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;pci&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;power&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;vpu&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;white&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
              &lt;lst&gt;
                &lt;str name="field"&gt;features&lt;/str&gt;
                &lt;str name="value"&gt;x&lt;/str&gt;
                &lt;int name="count"&gt;2&lt;/int&gt;
              &lt;/lst&gt;
            &lt;/arr&gt;
          &lt;/lst&gt;
        &lt;/arr&gt;
      &lt;/lst&gt;
    &lt;/arr&gt;
  &lt;/lst&gt;
&lt;/lst&gt;
&lt;/response&gt;</pre>
<p>As shown in the example, also in this case Solr had no problems with the correct calculation of the hierarchy. The  above example is almost the same, in the context of data available, as  the previous example, it only contains one more level of depth.</p>
<h3>A few words at the end</h3>
<p>In my opinion this is one of the more useful features for &#8220;<em>ordinary</em>&#8221; user. Unfortunately, so far only available in development version of Solr. I  have not found any information about whether it is planned to transfer  this functionality to version 1.5 of Solr, which is named <em>branch_3x</em> branch in SVN. However, it is important that this functionality was  commited, and sooner or later Solr users will be able to use it.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/en/2010/10/25/hierarchical-faceting-pivot-facets-in-trunk/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
