<?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>indexsorter &#8211; Solr.pl</title>
	<atom:link href="https://solr.pl/tag/indexsorter/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:44:51 +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; IndexSorter</title>
		<link>https://solr.pl/2010/10/04/szybkie-spojrzenie-indexsorter/</link>
					<comments>https://solr.pl/2010/10/04/szybkie-spojrzenie-indexsorter/#respond</comments>
		
		<dc:creator><![CDATA[Rafał Kuć]]></dc:creator>
		<pubDate>Mon, 04 Oct 2010 05:38:44 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[index]]></category>
		<category><![CDATA[index sorter]]></category>
		<category><![CDATA[indexsorter]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[solr]]></category>
		<category><![CDATA[sorting]]></category>
		<category><![CDATA[sortowanie]]></category>
		<category><![CDATA[sortowanie indeksu]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=38</guid>

					<description><![CDATA[Na konferencji Apache Lucene Eurocon 2010, która miała miejsce w maju tego roku, Andrzej Białecki w swojej prezentacji opowiadał o sposobach pozwalających uzyskać zadowalające efekty wyszukiwania korzystając z technik wcześniejszej terminacji wyszukiwania. Niestety narzędzia o których była mowa, nie były]]></description>
										<content:encoded><![CDATA[<p>Na konferencji Apache Lucene Eurocon 2010, która miała miejsce w maju  tego roku, Andrzej Białecki w swojej prezentacji opowiadał o sposobach  pozwalających uzyskać zadowalające efekty wyszukiwania korzystając z  technik wcześniejszej terminacji wyszukiwania. Niestety narzędzia o  których była mowa, nie były dostępne w Solr &#8211; to się jednak zmieniło.</p>
<p><span id="more-38"></span></p>
<p>W chwili obecnej, opisywane narzędzia dostępne są jedynie w branchu o nazwie <em>branch_3x</em> repozytorium SVN, jednak planowana jest migracja tych funkcjonalności także do wersji 4.x.</p>
<h3><strong>Ale o co chodzi ?</strong></h3>
<p>Korzystając z technik kończenia wyszukiwania po z góry ustalonym czasie,  nie oglądając się na ilość wyników wyszukiwania, trafiamy w pewnym  momencie na problem jakości wyników wyszukiwania. Zamiast otrzymywania  najlepszych, w kontekście danego wyszukiwania, wyników otrzymujemy je w  sposób losowy. Oznacza to, że nie jesteśmy w stanie zapewnić, iż  użytkownik korzystający z systemu dostanie najlepiej dopasowane wyniki.  Oczywiście dalej mówimy o sytuacji, kiedy kończymy wyszukiwanie po z  góry ustalonym czasie i nie dajemy Solr możliwości zebrania wszystkich  dokumentów pasujących do zapytania.</p>
<h3><strong>Po co mi to ?</strong></h3>
<p>Kiedy kończenie wyszukiwania po z góry ustalonym czasie może być  przydatne ? Istnieje wiele zastosowań takiego wyszukiwania. Wyobraźmy  sobie, że nasze wdrożenie składa się z wielu oddzielnych shardów, które  operują na dużej ilości danych każdy. W przypadku zadania zapytania,  każdy z shardów musi być odpytany o odpowiednie dokumenty, następnie  wszystkie wyniki muszą być złożone razem i wyświetlone użytkownikowi  końcowemu (oczywiście nie musi być to człowiek, może być to aplikacja).  Co jednak, jeżeli każdy z shardów potrzebuje bardzo długiego czasu na  przetworzenie wszystkich wyników wyszukiwania, a nas interesują np.  tylko te dodane w ostatnim czasie (np. w ostatnim tygodniu). Tutaj  właśnie mamy możliwość wcześniejszego zakończenia wyszukiwanie &#8211;  zakładając, że bardziej interesują nas dokumenty dodane poprzedniego  dnia, niż dwa tygodnie wcześniej.</p>
<h3><strong>Jak to zrealizować ?</strong></h3>
<p>Powyższy przykład pokazuje, przypadek kiedy możemy zastosować  wyszukiwanie zakończone po określonym z góry czasie. Jednak  zastanawiając się dalej trafiamy na pewien problem &#8211; aby posortować  wyniki wyszukiwania Solr musi pobrać je wszystkie. Czyli stosując w  zapytaniu parametr <em>sort=added+desc</em>, aby uzyskać poprawnie posortowane  dokumenty i tak każdy z shardów musiałby zwrócić wszystkie wyniki  wyszukiwania (oczywiście wszystkie w rozumieniu pojedynczego indeksu),  czyli nici z wcześniejszego zakończenia wyszukiwania ? Nie do końca.  Tutaj właśnie z pomocą przychodzi nam narzędzie IndexSorter, które do  tej pory dostępne było tylko w projekcie Nutch, a od niedawna dostępne  jest także w Lucene i Solr. Dzięki temu narzędziu możemy posortować  wstępnie indeks według odpowiadającego nam parametru. Zatem sortując  indeks malejąco po dacie dodania dokumentu, Solr pobierałby najpierw  dokumenty, które zostały dodanie najpóźniej, a tym samym mielibyśmy  możliwość zakończenia wyszukiwania po z góry ustalonym czasie.</p>
<h3><strong>Korzystanie z IndexSorter</strong></h3>
<p>Co zrobić, aby skorzystać z narzędzia IndexSorter ? Prawdę  powiedziawszy, nie jest to nic skomplikowanego. Należy jednak pamiętać,  że w momencie publikacji tego wpisu narzędzie to dostępne jest tylko w  branchu o nazwie <em>branch_3x</em>. Aby posortować indeks na podstawie  jakiegoś pola należy wywołać następującą komendę z linii poleceń  (oczywiście pamiętając o odpowiednim umiejscowieniu biblioteki  <em>lucene-misc-3.1.jar</em> z klasą IndexSorter &#8211; po wybudowaniu projektu  znajdziemy ją w katalogu <em>lucene/build/contrib/misc</em>):
</p>
<pre class="brush:bash">java IndexSorter KATALOG_ŹRÓDŁOWY KATALOG_DOCELOWY NAZWA_POLA</pre>
<p>Poszczególne parametry oznaczają:</p>
<ul>
<li><em>KATALOG_ŹRÓDŁOWY </em>&#8211; katalog z indeksem który chcemy posortować,</li>
<li><em>KATALOG_DOCELOWY</em> &#8211; katalog, gdzie zostanie zapisany posortowany indeks,</li>
<li><em>NAZWA_POLA </em>&#8211; pole, po jakim zostanie posortowany indeks.</li>
</ul>
<p>Jeżeli wszystko przebiegło poprawnie to na ekranie powinniśmy dostać informację w stylu:
</p>
<pre class="brush:bash">IndexSorter: done, 896 total milliseconds</pre>
<h3><strong>Na koniec</strong></h3>
<p>Moim zdaniem Lucene i Solr dostały właśnie bardzo ciekawą funkcjonalność, która może być wykorzystana wszędzie tam, gdzie <strong> </strong>ilość  danych jest bardzo duża, czas odpowiedzi nie może przekroczyć pewnej  granicy, a wyniki poza pierwszymi (pierwszych 100, czy 1000) nie są  znaczące. Wszystkich bardziej zainteresowanych tematem sortowania  indeksu oraz technikami dzielenia indeksu zapraszam do obejrzenia  slajdów z prezentacji pod tytułem &#8222;<em>Munching and Crunching: Lucene Index  Post-Processing</em>&#8221; (<a href="http://lucene-eurocon.org/slides/Munching-&amp;-crunching-Lucene-index-post-processing-and-applications_Andrzej-Bialecki.pdf" target="_blank" rel="noopener noreferrer">slajdy</a>) prowadzonej Andrzeja Białeckiego na  konferencji Lucene Eurocon 2010, który omawiał te tematy.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2010/10/04/szybkie-spojrzenie-indexsorter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
