<?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>5.1 &#8211; Solr.pl</title>
	<atom:link href="https://solr.pl/en/tag/5-1-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>Sat, 14 Nov 2020 13:52:40 +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>Solr 5.1: New faceting API (quick look)</title>
		<link>https://solr.pl/en/2015/05/30/solr-5-1-new-faceting-api-quick-look/</link>
					<comments>https://solr.pl/en/2015/05/30/solr-5-1-new-faceting-api-quick-look/#respond</comments>
		
		<dc:creator><![CDATA[Rafał Kuć]]></dc:creator>
		<pubDate>Sat, 30 May 2015 12:52:11 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[5.1]]></category>
		<category><![CDATA[faceting]]></category>
		<category><![CDATA[solr]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=861</guid>

					<description><![CDATA[With the recent release of Solr 5.1 we&#8217;ve got a nice, new functionalities in Solr. One of those new features is the new faceting module that allows to send reuquests in JSON format in the request body. In this blog]]></description>
										<content:encoded><![CDATA[<p>With the recent <a title="Lucene &amp; Solr 5.1" href="http://solr.pl/en/2015/04/14/lucene-solr-5-1/">release of Solr 5.1</a> we&#8217;ve got a nice, new functionalities in Solr. One of those new features is the new faceting module that allows to send reuquests in JSON format in the request body. In this blog entry we will try to quickly look at the functionality and see how Sorl changes when it comes to real time data analysis.</p>
<p><span id="more-861"></span></p>
<h3>Test data</h3>
<p>For the purpose of our tests I&#8217;ll use the data provided with the default Solr distribution. To run Solr and index the data I use the following command:
</p>
<pre class="brush:xml">bin/solr start -e techproducts
</pre>
<p>Starting Solr using this command will result in both starting Solr and indexing the data to a new collection called <em>techproducts</em>.</p>
<h3>The first example</h3>
<p>Let&#8217;s start with a very simple example of using the new faceting module &#8211; let&#8217;s try running a query that will result in Solr returning a list of categories and manufactures of our products with counts. The query we are used to would look as follows:
</p>
<pre class="brush:xml">curl 'localhost:8983/solr/techproducts/select?q=*:*&amp;rows=0&amp;indent=true&amp;facet=true&amp;facet.field=manu_id_s&amp;facet.field=cat'
</pre>
<p>The query that will use the new faceting API looks as follows:
</p>
<pre class="brush:xml">curl http://localhost:8983/solr/techproducts/query -d 'q=*:*&amp;rows=0&amp;
 json.facet={
  categories : {
   terms : {
    field: cat
   }
  },
  producers : {
   terms : {
    field: manu_id_s
   }
  }
 }'
</pre>
<p>The result returned by Solr is as follows:
</p>
<pre class="brush:xml">{
  "responseHeader":{
    "status":0,
    "QTime":2,
    "params":{
      "q":"*:*",
      "json.facet":"{\n  categories : {\n   terms : {\n    field: cat\n   } \n  },\n  manu : {\n   terms : {\n    field: manu_id_s\n   }\n  }\n}",
      "rows":"0"}},
  "response":{"numFound":32,"start":0,"docs":[]
  },
  "facets":{
    "count":32,
    "categories":{
      "buckets":[{
          "val":"electronics",
          "count":12},
        {
          "val":"currency",
          "count":4},
        {
          "val":"memory",
          "count":3},
        {
          "val":"connector",
          "count":2},
        {
          "val":"graphics card",
          "count":2},
        {
          "val":"hard drive",
          "count":2},
        {
          "val":"search",
          "count":2},
        {
          "val":"software",
          "count":2},
        {
          "val":"camera",
          "count":1},
        {
          "val":"copier",
          "count":1}]},
    "manu":{
      "buckets":[{
          "val":"corsair",
          "count":3},
        {
          "val":"belkin",
          "count":2},
        {
          "val":"canon",
          "count":2},
        {
          "val":"apple",
          "count":1},
        {
          "val":"asus",
          "count":1},
        {
          "val":"ati",
          "count":1},
        {
          "val":"boa",
          "count":1},
        {
          "val":"dell",
          "count":1},
        {
          "val":"eu",
          "count":1},
        {
          "val":"maxtor",
          "count":1}]}}}
</pre>
<p>As we can see &#8211; both the query and the results is not somthing we are used to, let&#8217;s discuss both briefly.</p>
<h4>Zapytanie</h4>
<p>The second query has been sent do the <em>query</em> handler, but that is not that important. What we are interested in is the query itself. All the parameters of the query were not send as the HTTP request parameters, but instead we&#8217;ve included them in the request body, although still in a form that we are used to. In addition to that, we&#8217;ve included a new thing <em>&#8211; </em>the <em>facet.json</em> parameter, which will holds our faceting definition.</p>
<p>In Solr 5.1, each faceting definition we want to use should be defined as follows:
</p>
<pre class="brush:xml">NAME: {
 TYPE: {
  PARAMETER: PARAMETER_VALUE
  ...
  PARAMETER: PARAMETER_VALUE
 }
}
</pre>
<p>In Solr 5.2 this format will be slightly changed, but we will get back to it once Solr 5.2 will be released. In our example we&#8217;ve used the <em>terms</em> faceting type, which works similar to the <em>facet.field</em> we are used to. The other possible types are for example <em>query</em> or <em>range</em>. Each of those type have a certain properties that can be used with them &#8211; we advise to visit offical Solr documentation to get information on what the parameters are.</p>
<h4>The results</h4>
<p>If we would look at the results returned by Solr we will see something called <em>buckets</em>. Those are <em>key &#8211; value</em> pairs that describe the returned faceting results. Something new, but we&#8217;ve already seen that with the standard faceting, just named differently. However, when using the new faceting API we can expect two types of responses &#8211; one is the <em>buckets</em> and the other is a single value. We will get back to it and describe why it is important when Solr 5.2 will be released.</p>
<h3>Faceting and functions</h3>
<p>Let&#8217;s try one more example &#8211; finding the average price for our products and the 99 percentile. With the new faceting API it is quick and easy &#8211; we can use functions in faceting. For example, the query that will fullfil our requirement looks as follows:
</p>
<pre class="brush:xml">curl http://localhost:8983/solr/techproducts/query -d 'q=*:*&amp;rows=0&amp;
 json.facet={
  average:"avg(price)",
  percentile:"percentile(price,99)"
 }'
</pre>
<p>The response generated by Solr looks as follows:
</p>
<pre class="brush:xml">{
  "responseHeader":{
    "status":0,
    "QTime":2,
    "params":{
      "q":"*:*",
      "json.facet":"{\n  average:\"avg(price)\",\n  percentile:\"percentile(price,99)\"\n }",
      "rows":"0"}},
  "response":{"numFound":32,"start":0,"docs":[]
  },
  "facets":{
    "count":32,
    "average":164.10218846797943,
    "percentile":1966.6484985351556}}
</pre>
<p>Solr returned the results we wanted in the form of single value for each faceting.</p>
<h3>What&#8217;s next?</h3>
<p>Of course the features we&#8217;ve looked at today is not all that Solr offers and will offer in the near future. First of all the number of functions that we can use in faceting will be extended &#8211; for example we will be able to calculate unique values. In addition to that, in Solr 5.2, we will get the ability to nest facets inside other facets and do calculations like &#8211; getting minimum price for each of the categories that we calculated using <em>terms</em> faceting.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/en/2015/05/30/solr-5-1-new-faceting-api-quick-look/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
