<?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>fieldcollapsing &#8211; Solr.pl</title>
	<atom:link href="https://solr.pl/tag/fieldcollapsing/feed/" rel="self" type="application/rss+xml" />
	<link>https://solr.pl</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 09:10:50 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>Szybkie spojrzenie &#8211; FieldCollapsing</title>
		<link>https://solr.pl/2010/09/20/szybkie-spojrzenie-fieldcollapsing/</link>
					<comments>https://solr.pl/2010/09/20/szybkie-spojrzenie-fieldcollapsing/#respond</comments>
		
		<dc:creator><![CDATA[Rafał Kuć]]></dc:creator>
		<pubDate>Mon, 20 Sep 2010 04:27:07 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[4.0]]></category>
		<category><![CDATA[collapsing]]></category>
		<category><![CDATA[field]]></category>
		<category><![CDATA[fieldcollapsing]]></category>
		<category><![CDATA[grouping]]></category>
		<category><![CDATA[grupowanie]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[lucene 4.0]]></category>
		<category><![CDATA[solr]]></category>
		<category><![CDATA[solr 4.0]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=34</guid>

					<description><![CDATA[FieldCollapsing, czyli inaczej grupowanie wyników wyszukiwania &#8211; funkcjonalność nad którą developerzy Lucene/Solr pracowali już od dłuższego czasu trafiła właśnie do repozytorium projektu Solr. Postanowiłem się przyjrzeć, w jaki sposób działa ta funkcjonalność. Na początek mała informacja, FieldCollapsing dostępny jest tylko]]></description>
										<content:encoded><![CDATA[<p>FieldCollapsing, czyli inaczej grupowanie wyników wyszukiwania &#8211;  funkcjonalność nad którą developerzy Lucene/Solr pracowali już od  dłuższego czasu trafiła właśnie do repozytorium projektu Solr.  Postanowiłem się przyjrzeć, w jaki sposób działa ta funkcjonalność.</p>
<p><span id="more-34"></span></p>
<p>Na początek mała informacja, FieldCollapsing dostępny jest tylko w  wersji 4.0, czyli w wersji rozwojowej kodu projektu Solr i raczej mało  prawdopodobnym jest przeniesienie tej funkcjonalności do wersji 3.X.</p>
<h3><strong>FieldCollapsing, czyli co ?</strong></h3>
<p>Wyobraźmy sobie, iż nasz indeks zawiera informacje o firmach z  różnych miast. Chcemy pokazać  użytkownikowi po jednej (lub np. dwie,  czy trzy) firmie z każdego miasta, oczywiście firmie spełniającej  kryteria wyszukiwania. W jaki sposób tego dokonać &#8211; wykorzystać właśnie  mechanizm FieldCollapsing. Pozwala on na grupowanie zwróconych w wyników  wyszukiwania na podstawie zawartości pól. Wyniki wyszukiwania mogą być  zgrupowane do pojedynczego dokumentu, bądź stałej ich ilości.</p>
<h3><strong><strong>Parametry</strong></strong></h3>
<p>Podobnie, jak w przypadku większości funkcjonalności dostępnych w  Solr, tak samo zachowanie mechanizmu FieldCollapsing można konfigurować  szeregiem parametrów, oto one:</p>
<ul>
<li><em>group</em> &#8211; analogicznie do np. facetingu ustawienie tego parametru na wartość <em>true</em> włącza mechanizm FieldCollapsing. Wartość domyślna parametru to <em>false</em>.</li>
<li><em>group.field</em> &#8211; określenie na podstawie jakiego pola ma się odbywać grupowanie.</li>
<li><em>group.func</em> &#8211; określenie funkcji, na podstawie wyniku której będzie odbywać się grupowanie.</li>
<li><em>group.limit</em> &#8211; ilość wyników jaka ma być zwrócona w poszczególnych grupach. Domyślna wartość parametru to 1.</li>
<li><em>group.sort</em> &#8211; parametr określający w jaki sposób sortować dokumenty w ramach grup. Wartość domyślna, to wartość <em>score desc</em>.</li>
</ul>
<p>Warto podkreślić, iż parametr <em>rows</em> przekazywany do zapytania  będzie określał ilość grup jaka ma zostać zwrócona w wynikach  wyszukiwania, a nie ilość pojedynczych dokumentów. Zmienia się także  zachowanie parametru <em>sort</em>. Parametr ten będzie sortował grupy  wyników, a nie poszczególne dokumenty. Grupy będą sortowane na podstawie  zawartości pól pierwszych dokumentów tworzących grupy.</p>
<h3><strong>Wyniki wyszukiwania</strong></h3>
<p>Wyniki wyszukiwania różnią się od tych do których jesteśmy  przyzwyczajeni. Są one pogrupowane według parametrów, które  przekazaliśmy. Głównym elementem wyników wyszukiwania nie są już  poszczególne dokumenty, a grupy dokumentów. Dopiero w ramach grup  pokazywane są dokumenty (ich ilość definiuje parametr <em>group.limit</em>). Na przykład, zadając zapytanie:
</p>
<pre class="brush:xml">http://localhost:8983/solr/select/?q=*:*&amp;group=true&amp;group.field=inStock&amp;indent=true</pre>
<p>do indeksu, który powstał poprzez zaindeksowanie wszystkich dokumentów w formacie XML z katalogu <em>exampledocs</em> przykładowego wdrożenia dostarczanego z Solr, otrzymujemy następujący wynik:
</p>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;response&gt;
&lt;lst name="responseHeader"&gt;
  &lt;int name="status"&gt;0&lt;/int&gt;
  &lt;int name="QTime"&gt;0&lt;/int&gt;
  &lt;lst name="params"&gt;
    &lt;str name="group.field"&gt;inStock&lt;/str&gt;
    &lt;str name="group"&gt;true&lt;/str&gt;
    &lt;str name="indent"&gt;true&lt;/str&gt;
    &lt;str name="q"&gt;*:*&lt;/str&gt;
  &lt;/lst&gt;
&lt;/lst&gt;
&lt;lst name="grouped"&gt;
  &lt;lst name="inStock"&gt;
    &lt;int name="matches"&gt;19&lt;/int&gt;
    &lt;arr name="groups"&gt;
     &lt;lst&gt;
        &lt;str name="groupValue"&gt;T&lt;/str&gt;
        &lt;result name="doclist" numFound="15" start="0"&gt;
          &lt;doc&gt;
            &lt;arr name="cat"&gt;&lt;str&gt;electronics&lt;/str&gt;&lt;str&gt;hard drive&lt;/str&gt;&lt;/arr&gt;
            &lt;arr name="features"&gt;&lt;str&gt;7200RPM, 8MB cache, IDE Ultra ATA-133&lt;/str&gt;&lt;str&gt;NoiseGuard, SilentSeek technology, Fluid Dynamic Bearing (FDB) motor&lt;/str&gt;&lt;/arr&gt;
            &lt;str name="id"&gt;SP2514N&lt;/str&gt;
            &lt;bool name="inStock"&gt;true&lt;/bool&gt;
            &lt;str name="manu"&gt;Samsung Electronics Co. Ltd.&lt;/str&gt;
            &lt;date name="manufacturedate_dt"&gt;2006-02-13T15:26:37Z&lt;/date&gt;
            &lt;str name="name"&gt;Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133&lt;/str&gt;
            &lt;int name="popularity"&gt;6&lt;/int&gt;
            &lt;float name="price"&gt;92.0&lt;/float&gt;
            &lt;str name="store"&gt;45.17614,-93.87341&lt;/str&gt;
            &lt;double name="store_0_d"&gt;45.17614&lt;/double&gt;
            &lt;double name="store_1_d"&gt;-93.87341&lt;/double&gt;
            &lt;str name="store_lat_lon"&gt;45.17614,-93.87341&lt;/str&gt;
          &lt;/doc&gt;
        &lt;/result&gt;
      &lt;/lst&gt;
      &lt;lst&gt;
        &lt;str name="groupValue"&gt;F&lt;/str&gt;
        &lt;result name="doclist" numFound="4" start="0"&gt;
          &lt;doc&gt;
            &lt;arr name="cat"&gt;&lt;str&gt;electronics&lt;/str&gt;&lt;str&gt;connector&lt;/str&gt;&lt;/arr&gt;
            &lt;arr name="features"&gt;&lt;str&gt;car power adapter, white&lt;/str&gt;&lt;/arr&gt;
            &lt;str name="id"&gt;F8V7067-APL-KIT&lt;/str&gt;
            &lt;bool name="inStock"&gt;false&lt;/bool&gt;
            &lt;str name="manu"&gt;Belkin&lt;/str&gt;
            &lt;date name="manufacturedate_dt"&gt;2005-08-01T16:30:25Z&lt;/date&gt;
            &lt;str name="name"&gt;Belkin Mobile Power Cord for iPod w/ Dock&lt;/str&gt;
            &lt;int name="popularity"&gt;1&lt;/int&gt;
            &lt;float name="price"&gt;19.95&lt;/float&gt;
            &lt;str name="store"&gt;45.17614,-93.87341&lt;/str&gt;
            &lt;double name="store_0_d"&gt;45.17614&lt;/double&gt;
            &lt;double name="store_1_d"&gt;-93.87341&lt;/double&gt;
            &lt;str name="store_lat_lon"&gt;45.17614,-93.87341&lt;/str&gt;
            &lt;float name="weight"&gt;4.0&lt;/float&gt;
          &lt;/doc&gt;
        &lt;/result&gt;
      &lt;/lst&gt;
    &lt;/arr&gt;
  &lt;/lst&gt;
&lt;/lst&gt;
&lt;/response&gt;</pre>
<h3><strong>Na koniec</strong></h3>
<p>Ciekawa funkcjonalność, która na pewno znajdzie zastosowania w  niektórych wdrożeniach. Należy jednak pamiętać, iż funkcjonalność ta  będzie jeszcze rozwijana. Jak na razie nie ma wsparcia m.in. dla  wyszukiwania rozproszonego<strong>, </strong>czy grupowania po polach  wielowartościowych. W tym momencie nie ma sensu przeprowadzanie też  testów wydajnościowych, po pierwsze ze względu na zmiany jakie zajdą w  samym mechanizmie, a po drugie ze względu na to, iż jest to mocno  rozwojowa wersja Lucene i Solr. Niemniej jednak, na pewno będę miał  opisywaną funkcjonalność na oku <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;" /><strong><br />
</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2010/09/20/szybkie-spojrzenie-fieldcollapsing/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
