<?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>date faceting &#8211; Solr.pl</title>
	<atom:link href="https://solr.pl/tag/date-faceting/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:06:08 +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>Możliwość facetingu w Solr</title>
		<link>https://solr.pl/2010/08/23/mozliwosc-facetingu-w-solr/</link>
					<comments>https://solr.pl/2010/08/23/mozliwosc-facetingu-w-solr/#respond</comments>
		
		<dc:creator><![CDATA[Rafał Kuć]]></dc:creator>
		<pubDate>Mon, 23 Aug 2010 05:48:10 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[date faceting]]></category>
		<category><![CDATA[facet]]></category>
		<category><![CDATA[facet method]]></category>
		<category><![CDATA[facet parameter]]></category>
		<category><![CDATA[facet query]]></category>
		<category><![CDATA[faceting]]></category>
		<category><![CDATA[local]]></category>
		<category><![CDATA[local params]]></category>
		<category><![CDATA[params]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[range faceting]]></category>
		<category><![CDATA[solr]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=26</guid>

					<description><![CDATA[Faceting to jedna z metod kategoryzacji treści znalezionych w procesie wyszukiwania informacji. W przypadku Solr jest to podział zbioru znalezionych dokumentów na podstawie pewnego kryterium: zawartości pojedynczego pola, zapytania, czy też na podstawie przedziałów lub dat. W dzisiejszym wpisie postaram]]></description>
										<content:encoded><![CDATA[<p>Faceting to jedna z metod kategoryzacji treści znalezionych w procesie  wyszukiwania informacji. W przypadku Solr jest to podział zbioru  znalezionych dokumentów na podstawie pewnego kryterium: zawartości  pojedynczego pola, zapytania, czy też na podstawie przedziałów lub dat. W  dzisiejszym wpisie postaram się przybliżyć możliwości wykorzystania  mechanizmu facetingu, zarówno tego dostępnego obecnie w Solr 1.4.1, jak  również tego co będzie dostępne w przyszłości.</p>
<p><span id="more-26"></span></p>
<p>Jednym z niewielu źródeł dotyczących facetingu jest wiki Solr, a dokładniej strona pod adresem: <a href="http://wiki.apache.org/solr/SimpleFacetParameters" target="_blank" rel="noopener noreferrer">http://wiki.apache.org/solr/SimpleFacetParameters</a>. Poniższy artykuł jest rozszerzeniem informacji dostępnych na wymienionej stronie.</p>
<p>Faceting w Solr można podzielić na cztery podstawowe rodzaje:</p>
<ul>
<li>faceting po polu,</li>
<li>faceting za pomocą zapytania,</li>
<li>faceting po datach,</li>
<li>faceting po przedziałach.</li>
</ul>
<p>Aby uruchomić mechanizm facetingu, należy do zapytania, które zadajemy do Solr dołączyć parametr <em>facet</em> z wartością <em>true</em>.</p>
<h3>Faceting po polu</h3>
<p>Pierwszy rodzaj facetingu, polegający na kategoryzacji znalezionych  dokumentów ze względu na zawartość podanego pola. Dzięki temu rodzajowi  facetingu jesteśmy w stanie pobrać ilości dokumentów znalezionych na  przykład w poszczególnych kategoriach, czy w podziale na lokalizację  geograficzną. Faceting ten charakteryzuje się sporą liczbą opcji i  możliwości konfigurowania jego zachowań. Poniżej parametry możliwe do  wykorzystania:</p>
<ul>
<li><em>facet.field</em> &#8211; pole po którym będzie wykonywany  faceting. W jednym zapytaniu może być wiele pól po którym wykonywany  będzie faceting. Należy jednak liczyć się ze spadkiem wydajności w  przypadku dużej ilości pól, po których wykonujemy faceting.</li>
<li><em>facet.prefix</em> &#8211; ogranicza wyniki facetingu do tych, które zaczynają się od podanego  przedrostka. Parametr może być definiowany dla poszczególnych pól  przekazanych w parametrze <em>facet.field</em> poprzez dodanie nazwy pola w następujący sposób: <em>facet.NAZWA_POLA.prefix</em>.&nbsp; Z pomocą tego parametru w dość prosty sposób można wdrożyć mechanizm autocomplete.</li>
<li><em>facet.sort</em> &#8211; określa w jaki sposób mają być sortowane wyniki facetingu. Jeżeli  korzystamy z Solr w wersji niższej, niż 1.4 parametr ten przyjmuje  wartości <em>true</em> lub <em>false</em> oznaczające kolejno:  sortowanie po ilości wyników oraz sortowanie według porządku w indeksie  (w przypadku znaków ASCII oznacza sortowania alfabetyczne). Jeżeli  natomiast korzystamy z Solr w wersji 1.4 lub wyższej powinniśmy  korzystać z wartości <em>count</em> (oznaczającej to samo co wartość <em>true</em>) oraz <em>index</em> (oznaczającej to samo co <em>false</em>). Warto wiedzieć, iż wartością domyślną parametru jest wartość <em>true/count</em> w przypadku ustawienia parametru <em>facet.limit</em> na wartość 0 lub <em>false/index</em> w przypadku ustawienia większego limitu. Parametr może być definiowany dla poszczególnych pól przekazanych w parametrze <em>facet.field.</em></li>
<li><em>facet.limit </em>&#8211;  parametr określający jak dużo unikalnych wartości ma zwrócić mechanizm  facetingu dla danego pola. Wartość ujemna tego parametru oznacza brak  ustawionego limitu. Należy pamiętać, iż im większy limit, tym większą  ilość pamięci potrzebujemy oraz tym dłuższy czas wykonywania zapytania.  Wartość domyślna parametru to 100. Parametr może być definiowany dla  poszczególnych pól przekazanych w parametrze <em>facet.field</em>.</li>
<li><em>facet.offset</em> &#8211; parametr określający od którego wyniku facetingu prezentować wyniki.  Wartość domyślna parametru to 0. Parametr może być wykorzystany do  stronicowania wyników facetingu. Parametr może być definiowany dla  poszczególnych pól przekazanych w parametrze <em>facet.field.</em></li>
<li><em>facet.mincount</em> &#8211; parametr określający, jaką minimalną liczność musi mieć dany wynik,  aby pokazany został w wynikach facetingu. Domyślna wartość tego  parametru to 0. Parametr może być definiowany dla poszczególnych pól  przekazanych w parametrze <em>facet.field.</em></li>
<li><em>facet.missing</em> &#8211; parametr określający, czy oprócz standardowych wyników facetingu ma  być dodany wpis o ilości dokumentów nie posiadających wpisu w danym  polu. Parametr przyjmuje wartości <em>true </em>oraz <em>false</em> (wartość domyślna). Parametr może być definiowany dla poszczególnych pól przekazanych w parametrze <em>facet.field.</em></li>
<li><em>facet.method</em> &#8211; parametr wprowadzony w Solr 1.4, przyjmuje wartości <em>enum</em> oraz <em>fc</em>. Określa metodę wyliczania wartości facetingu. Ustawienie metody kryjącej się pod parametrem <em>enum </em>skutkuje  wyliczeniem wszystkich termów w danym polu i wyliczeniem na tej  podstawie wyników facetingu. Ta metoda wyliczenia okazuje się wydajna  przy polach, które mają małą ilość unikalnych termów. Druga metoda  oznaczona jako <em>fc</em> jest standardową metodą wyliczania facetingu  dla pól jednowartościowych i polega na iterowaniu po wszystkich  znalezionych dokumentach w celu wyliczenia wyników facetingu. Parametr  może być definiowany dla poszczególnych pól przekazanych w parametrze <em>facet.field. </em>Domyślną wartością parametru jest <em>fc</em> dla wszystkich pól nie opartych o typ <em>Boolean</em>. <em><br />
</em></li>
<li><em>facet.enum.cache.minDf </em>&#8211;  parametr o dziwnie brzmiącej nazwie określający minimalną liczbę  dokumentów pasujących do pojedynczego termu, aby dla tego termu użyć  metody <em>fc</em> do wyliczania wyników facetingu. Wiem, że to brzmi pokrętnie, ale nie wiem czy da się prościej to wytłumaczyć <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;" /></li>
</ul>
<p>Tak wyglądają parametry facetingu, z jakich możemy skorzystać w  przypadku pierwszego rodzaju facetingu. W większości parametrów  napisałem, iż możliwe jest definiowanie parametru dla poszczególnych  pól. Jak to wygląda ? Załóżmy, że zadajemy następujące zapytanie do  Solr:
</p>
<pre class="brush:xml">q=solr&amp;facet=true&amp;facet.field=category&amp;facet.field=location</pre>
<p>Proste zapytanie o term 'solr&#8217; z włączonym mechanizmem facetingu po dwóch polach &#8211; polu <em>category</em> oraz polu <em>location</em>. Chcielibyśmy, dla pola <em>category</em> pokazać 200 wyników facetingu posortowanych według liczności, a dla pola <em>location</em> pokazać 50 wyników facetingu posortowanych alfabetycznie. Aby to  osiągnąć dodajemy do naszego zapytania następujący fragment:
</p>
<pre class="brush:xml">facet.category.limit=200&amp;facet.category.sort=count&amp;facet.location.limit=50&amp;facet.location.sort=index</pre>
<p>W pokazany sposób możemy bez problemu modyfikować zachowanie mechanizmu  facetingu dla poszczególnych pól dla których jest on wyliczany w ramach  zapytania.</p>
<h3>Faceting za pomocą zapytania</h3>
<p>Metoda facetingu oparta tak naprawdę o jeden parametr &#8211; <em>facet.query</em> do którego podajemy zapytanie. Zapytanie musi być zapisane tak, aby  standardowy parser Lucene był w stanie je zrozumieć. Przykładem  wykorzystania tego parametru jest np. zapytanie o grupę cenową, które  mogłoby wyglądać na przykład tak:
</p>
<pre class="brush:xml">facet.query=price:[0+TO+100]</pre>
<p>Należy  jednak pamiętać, iż każdy dodany do zapytania parametr <em>facet.query</em> to kolejne zapytanie do Lucene, co oznacza spadek wydajności całego zapytania zadawanego do Solr.</p>
<p>W przypadku tej metody facetingu warto wspomnieć, iż istnieje  możliwość zdefiniowania własnego parsera, który ma być użyty do  przetworzenia zapytania przekazanego za pomocą parametru <em>facet.query</em>. Aby skorzystać na przykład z parsera o nazwie <em>myParser</em> przekazany parametr powinien wyglądać następująco:
</p>
<pre class="brush:xml">facet.query={!myParser}aaa.</pre>
<h3>Faceting po datach</h3>
<p>W wersji 1.3 Solr pojawiła się nowa funkcjonalność &#8211; faceting po  datach. Pozwala na wyliczanie wyników facetingu z uwzględnieniem  wszystkich zawiłości związanych z przetwarzaniem dat. Należy pamiętać,  iż faceting po datach może być tylko wykorzystywany z polami opartymi o  typ <em>solr.DateField</em>. Przejdźmy więc do opisania parametrów związanych z facetingiem po datach:</p>
<ul>
<li><em>facet.date </em>&#8211; podobnie jak parametr <em>facet.field</em> parametr ten służy do określenia pól, w których ma być przeprowadzany faceting po datach. Podobnie jak w przypadku parametru <em>facet.field</em> możliwe jest podanie tego parametru wielokrotnie, aby umożliwić faceting po datach na wielu polach w ramach jednego zapytania.</li>
<li><em>facet.date.start </em>&#8211;  parametr określający dolną granicę daty, czyli od której daty ma być  rozpoczęte wyliczanie facetingu. Parametr może być definiowany dla  poszczególnych pól przekazanych w parametrze <em>facet.date</em>. Parametr ten jest wymagany w przypadku korzystania z parametru <em>facet.date</em>.</li>
<li><em>facet.date.end</em> &#8211; parametr określający górną granicę daty, czyli do której daty ma być  zakończone wyliczanie facetingu. Parametr może być definiowany dla  poszczególnych pól przekazanych w parametrze <em>facet.date</em>. Parametr ten jest wymagany w przypadku korzystania z parametru <em>facet.date</em>.</li>
<li><em>facet.date.gap </em>&#8211;  parametr określający przedziały dat, jakie mają być generowane dla  zdefiniowanych granic. Parametr może być definiowany dla poszczególnych  pól przekazanych w parametrze <em>facet.date</em>. Parametr ten jest wymagany w przypadku korzystania z parametru <em>facet.date</em>.</li>
<li><em>facet.date.hardend</em> &#8211; parametr przyjmujący wartości <em>true</em> oraz <em>false</em>, określający co Solr ma zrobić w przypadku kiedy parametr <em>facet.date.gap</em> nie podzieli równo przedziałów pomiędzy zdefiniowanym początkiem, a końcem. Jeżeli ustawimy ten parametr na wartość <em>true</em> ostatni przedział może być większy od podanego w parametrze <em>facet.date.end</em> końca. W przypadku ustawienia na wartość <em>false</em> (która jest wartością domyślną) ostatni przedział dat może być mniejszy  od pozostałych. Parametr może być definiowany dla poszczególnych pól  przekazanych w parametrze <em>facet.date</em>.</li>
<li><em>facet.date.other</em> &#8211; parametr określający jakie wartości oprócz tych wyliczonych dla  określonych przedziałów mają być zawarte w wynikach facetingu. Parametr  może być definiowany dla poszczególnych pól przekazanych w parametrze <em>facet.date</em>. Parametr może przyjmować następujące wartości:
<ul>
<li><em>before</em> &#8211; oprócz przedziałów wyniki facetingu będą  zawierać wyliczenia ilości dla dat mieszczących się przed granicą  zdefiniowaną w parametrze <em>facet.date.start,</em></li>
<li><em>after </em>&#8211;  oprócz przedziałów wyniki facetingu będą zawierać wyliczenia ilości dla  dat mieszczących się za granicą zdefiniowaną w parametrze <em>facet.date.end,</em></li>
<li><em>between</em> &#8211; do wyników facetingu po datach zostanie dołączona informacja o licznościach w przedziale zdefiniowanym przez parametry <em>facet.date.start</em> oraz <em>facet.date.end,</em></li>
<li><em>all </em>&#8211; skrót określający, że dla danego pola mają zostać dodane trzy powyższe opcje,</li>
<li><em>none &#8211;</em> wartość określająca, iż żadna dodatkowa informacja ma nie być dołączona do wyników facetingu.</li>
</ul>
</li>
<li><em>facet.date.include</em> &#8211; parametr, który zostanie  wprowadzony w Solr 4.0. Parametr pozwala na domykanie, bądź otwieranie  przedziałów zdefiniowanych przy pomocy parametrów <em>facet.date.start</em> oraz <em>facet.date.end</em>. Parametr będzie przyjmował następujące wartości:
<ul>
<li><em>lower </em>&#8211; każdy z powstałych przedziałów będzie zawierał swoją dolną granicę,</li>
<li><em>upper</em> &#8211; każdy z powstałych przedziałów będzie zawierał swoją górną granicę,</li>
<li><em>egde</em> &#8211; pierwszy i ostatni przedział będą zawierały swoje zewnętrzne granice &#8211;  czyli dolną dla pierwszego przedziału i górną dla ostatniego  przedziału,</li>
<li><em>outer</em> &#8211; parametr określający, iż przedziały zdefiniowane przez wartości <em>before</em> i <em>after</em> parametru <em>facet.date.other</em> będą zawierały swoje granice, nawet jeżeli inne przedziały zawierają już te granice,</li>
<li><em>all</em> &#8211; parametr powodujący włączenie czterech powyższych opcji.</li>
</ul>
</li>
</ul>
<p>Tak przedstawiają się opcje facetingu po datach. Poniżej przykład wykorzystania tego rodzaju facetingu:
</p>
<pre class="brush:xml">q=solr&amp;facet=true&amp;facet.date=addDate&amp;facet.date.start=NOW/DAY-30DAYS&amp;facet.date.end=NOW/DAY%2B30DAYS&amp;facet.date.gap=%2B1DAY</pre>
<p>Zajmijmy się facetingiem w tym zapytaniu &#8211; faceting po datach po polu o nazwie <em>addDate</em>.  Jako dolną granicę ustawiamy datę o 30 dni wcześniejszą niż obecna,  górna granica to data o 30 dni później, niż w chwili zadawania  zapytania. Przedziały mają być wielkości jednego dnia.</p>
<h3>Faceting po przedziałach</h3>
<p>Funkcjonalność która dostępna będzie w Solr 3.1. Jeżeli ktoś chce już  teraz ją testować, to zarówno trunk, jak i branch 3.x mają tą  funkcjonalność zaimplementowaną. Ta metoda facetingu powstała jako  rozszerzenie pomysłu facetingu po datach. Funkcjonalność działa  analogicznie do facetingu po datach, czyli w wyniku działania dostajemy  listę przedziałów skonstruowanych automatycznie na podstawie parametrów.  Lista parametrów, jakie charakteryzują działanie mechanizmu:</p>
<ul>
<li><em>facet.range </em>&#8211; parametr określający po jakich polach ma  być przeprowadzony faceting po przedziałach. Parametr może być  przekazywany wielokrotnie.</li>
<li><em>facet.range.start </em>&#8211;  parametr określający dolną granicę przedziałów, czyli wartość od której  ma być  rozpoczęte wyliczanie facetingu. Parametr może być definiowany  dla  poszczególnych pól przekazanych w parametrze <em>facet.range</em>. Parametr ten jest wymagany w przypadku korzystania z parametru <em>facet.range</em>.</li>
<li><em>facet.range.end</em> &#8211; parametr określający dolną granicę przedziałów, czyli wartość na  której ma być skończone wyliczanie facetingu. Parametr może być  definiowany  dla  poszczególnych pól przekazanych w parametrze <em>facet.range</em>. Parametr ten jest wymagany w przypadku korzystania z parametru <em>facet.range</em>.</li>
<li><em>facet.range.gap</em> &#8211; parametr określający wielkość przedziałów, jakie mają być generowane  dla  zdefiniowanych granic. Parametr może być definiowany dla  poszczególnych  pól przekazanych w parametrze <em>facet.range</em>. Parametr ten jest wymagany w przypadku korzystania z parametru <em>facet.range</em>.</li>
<li><em>facet.range.hardend</em> &#8211; parametr przyjmujący wartości <em>true</em> oraz <em>false</em>, określający co Solr ma zrobić w przypadku kiedy parametr <em>facet.range.gap</em> nie podzieli równo przedziałów pomiędzy zdefiniowanym początkiem, a końcem. Jeżeli ustawimy ten parametr na wartość <em>true</em> ostatni przedział może być większy od podanego w parametrze <em>facet.range.end</em> końca. W przypadku ustawienia na wartość <em>false</em> (która jest wartością domyślną) ostatni przedział może być mniejszy  od  pozostałych. Parametr może być definiowany dla poszczególnych pól   przekazanych w parametrze <em>facet.range</em>.</li>
<li><em>facet.range.other</em> &#8211; parametr określający jakie wartości oprócz tych wyliczonych dla   określonych przedziałów mają być zawarte w wynikach facetingu. Parametr   może być definiowany dla poszczególnych pól przekazanych w parametrze <em>facet.range</em>. Parametr może przyjmować następujące wartości:
<ul>
<li><em>before</em> &#8211; oprócz przedziałów wyniki facetingu będą  zawierać wyliczenia ilości dla przedziału mieszczących się przed granicą  zdefiniowaną w parametrze <em>facet.range.start,</em></li>
</ul>
<ul>
<li><em>after </em>&#8211; oprócz przedziałów wyniki facetingu będą  zawierać  wyliczenia ilości dla przedziału mieszczących się za granicą  zdefiniowaną w  parametrze <em>facet.range.end,</em></li>
</ul>
<ul>
<li><em>between</em> &#8211; do wyników facetingu po rozdziałach zostanie dołączona informacja o licznościach w przedziale zdefiniowanym przez parametry <em>facet.range.start</em> oraz <em>facet.range.end,</em></li>
</ul>
<ul>
<li><em>all </em>&#8211; skrót określający, że dla danego pola mają zostać dodane trzy powyższe opcje,</li>
<li><em>none &#8211;</em> wartość określająca, iż żadna dodatkowa informacja ma nie być dołączona do wyników facetingu po przedziałach.</li>
</ul>
</li>
<li><em>facet.range.include </em>&#8211; parametr pozwala na  domykanie, bądź otwieranie przedziałów zdefiniowanych przy pomocy  parametrów <em>facet.range.start</em> oraz <em>facet.range.end</em>. Parametr przyjmuje następujące wartości:
<ul>
<li><em>lower </em>&#8211; każdy z powstałych przedziałów będzie zawierał swoją dolną granicę,</li>
<li><em>upper</em> &#8211; każdy z powstałych przedziałów będzie zawierał swoją górną granicę,</li>
<li><em>egde</em> &#8211; pierwszy i ostatni przedział będą zawierały swoje  zewnętrzne granice  &#8211; czyli dolną dla pierwszego przedziału i górną dla  ostatniego  przedziału,</li>
<li><em>outer</em> &#8211; parametr określający, iż przedziały zdefiniowane przez wartości <em>before</em> i <em>after</em> parametru <em>facet.date.other</em> będą zawierały swoje granice, nawet jeżeli inne przedziały zawierają już te granice,</li>
<li><em>all</em> &#8211; parametr powodujący włączenie czterech powyższych opcji.</li>
</ul>
</li>
</ul>
<p>Jak widać parametry facetingu po przedziałach są prawie identyczne,  jak w przypadku facetingu po datach. Działanie jest także analogiczne.  Przykładem zapytania z wykorzystaniem facetingu po datach może być  następujące zapytanie:
</p>
<pre class="brush:xml">q=solr&amp;facet=true&amp;facet.range=price&amp;facet.range.start=0&amp;facet.range.end=1000&amp;facet.range.gap=100</pre>
<p>Tak przeszliśmy przez wszystkie rodzaje facetingu. Jednak to jeszcze  nie wszystko. Użytkownicy Solr w wersji 1.4 i wyższych mają możliwość  korzystania z tzw. <em>LocalParams</em> wraz z facetingiem.</p>
<h3>LocalParams i faceting</h3>
<p>Załóżmy takie wymaganie. Mamy zapytanie, które zwraca wyniki wyszukiwania dla słowa <em>solr</em> oraz, które ma zdefiniowane dwa filtry jeden dla kategorii, a drugi dla  kraju z którego pochodzi dokument. Oprócz wyników wyszukiwania chcemy  umożliwić, w ramach wyników wyszukiwania, nawigację po regionach oraz po  kategoriach, ale chcielibyśmy, aby liczności nie były od siebie  zależne. To znaczy chcielibyśmy dać możliwość nawigacji po regionach dla  słowa <em>solr</em>, ale nie zawężonych do wybranej kategorii, oraz po  kategorii, ale nie zawężonej do wybranego regionu. Żeby zrobić to w Solr  w wersji 1.3 lub wcześniejszej, należałoby napisać następujące  zapytania:
</p>
<pre class="brush:xml">q=solr&amp;fq=category:search&amp;fq=region:poland
q=solr&amp;facet=true&amp;facet.field=category&amp;facet.field=region</pre>
<p>Dwa zapytania dlatego, że po pierwsze musimy pobrać zawężone wyniki  wyszukiwania, a z drugiej strony potrzebujemy niezawężonych wyników  wyszukiwania po to, aby pobrać wymagane liczności za pomocą facetingu.</p>
<p>W przypadku Solr w wersji 1.4 lub wyższej mamy możliwość skrócenia  tego do jednego zapytania. Do tego celu wykorzystamy możliwość tagowania  i wykluczania tagowanych parametrów. Pierwsze zapytanie zmieniamy w  następujący sposób:
</p>
<pre class="brush:xml">q=solr&amp;fq={!tag=categoryFQ}fq=category:search&amp;fq={!tag=regionFQ}region:poland</pre>
<p>Na razie wyniki wyszukiwania się nie zmienią. Do powyższego zapytania  zostały dodane tagi nadające nazwę każdemu z wykorzystywanych filtrów  po to, abyśmy mogli wykluczyć je w facetingu.</p>
<p>Drugie zapytanie modyfikujemy w następujący sposób:
</p>
<pre class="brush:xml">q=solr&amp;facet=true&amp;facet.field={!ex=categoryFQ,regionFQ}category&amp;facet.field={!ex=categoryFQ,regionFQ}region</pre>
<p>Tutaj także na razie wyniki facetingu nie uległy zmianie. Dodaliśmy  do facetingu wykluczenia, które mówią o tym, że filtry o nazwach <em>categoryFQ</em> oraz <em>regionFQ</em> mają nie być brane pod uwagę przy wyliczaniu wyników facetingu.</p>
<p>Tak zmodyfikowane zapytanie łączymy w jedno, które powinno wyglądać następująco:
</p>
<pre class="brush:xml">q=solr&amp;fq={!tag=categoryFQ}fq=category:search&amp;fq={!tag=regionFQ}region:poland&amp;facet=true&amp;facet.field={!ex=categoryFQ,regionFQ}category&amp;facet.field={!ex=categoryFQ,regionFQ}region</pre>
<p>Więcej o <em>LocalParams</em> napiszę w jednym z kolejnych wpisów.</p>
<h3>Kilka słów na koniec</h3>
<p>Mam nadzieję, że tym artykułem przybliżyłem możliwości wykorzystania  facetingu w Solr, zarówno w starszych wersjach, w tej obecnej, jak i  tych, które pojawią się w przyszłości.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2010/08/23/mozliwosc-facetingu-w-solr/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
