<?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>sortowanie &#8211; Solr.pl</title>
	<atom:link href="https://solr.pl/tag/sortowanie/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>
		<item>
		<title>Proces wyszukiwania</title>
		<link>https://solr.pl/2010/08/09/proces-wyszukiwania/</link>
					<comments>https://solr.pl/2010/08/09/proces-wyszukiwania/#respond</comments>
		
		<dc:creator><![CDATA[Marek Rogoziński]]></dc:creator>
		<pubDate>Mon, 09 Aug 2010 16:12:16 +0000</pubDate>
				<category><![CDATA[Ogólna]]></category>
		<category><![CDATA[faceting]]></category>
		<category><![CDATA[filtrowanie]]></category>
		<category><![CDATA[podstawy]]></category>
		<category><![CDATA[sortowanie]]></category>
		<category><![CDATA[wyszukiwanie]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=20</guid>

					<description><![CDATA[Niniejszym inaugurujemy część solr.pl poświęconą tym zagadnieniom, które nie są związane z konkretnym silnikiem wyszukiwania a raczej z budową i rozwojem funkcjonalności serwisów internetowych związanych z wyszukiwaniem. Czy zastanawialiście się co powoduje, że wyszukiwarka w serwisie jest uważana za dobrą?]]></description>
										<content:encoded><![CDATA[<p>Niniejszym inaugurujemy część solr.pl poświęconą tym zagadnieniom, które nie są związane z konkretnym silnikiem wyszukiwania a raczej z budową i rozwojem funkcjonalności serwisów internetowych związanych z wyszukiwaniem.</p>
<p>Czy zastanawialiście się co powoduje, że wyszukiwarka w serwisie jest uważana za dobrą? By odpowiedzieć na to pytanie, należy się zastanowić, jak wygląda typowy proces znajdowania przez klienta pożądanej przez niego informacji. I czy jest coś takiego, jak typowy proces.</p>
<p><span id="more-20"></span></p>
<p>W projektach, w których udało mi się uczestniczyć dobrze sprawdzał się model mówiący o podziale na następujące fazy:</p>
<ul>
<li>wyszukiwanie</li>
<li>redefinicja zapytania</li>
<li>filtracja</li>
<li>sortowanie</li>
<li>przeglądanie wyników</li>
</ul>
<p>Nie wszystkie te fazy muszą wystąpić, ich kolejność czasem będzie inna, czasem też poszczególne fazy będą występować wielokrotnie. Również w zależności od produktu, posiadanych danych i ich ilości nie wszystkie z nich system musi udostępniać.</p>
<p><strong>1. Wyszukiwanie</strong></p>
<p><strong><img decoding="async" class="alignleft size-medium wp-image-212" style="margin: 10px" src="http://solr.pl/wp-content/uploads/2010/08/wyszukiwanie-300x124.png" alt="" width="300" height="124"></strong>Tu użytkownik może wykazać się największą inwencją wpisując w pole (albo wiele pól) frazę wyszukiwania. I jest to jednocześnie krytyczny moment, w którym często nowy użytkownik podejmuje decyzję: zostać czy znaleźć inny, lepszy serwis. Na co zwykle zwracamy uwagę:</p>
<ul>
<li>czytelność wyników i sensowność 	doboru wyświetlanych informacji – celem użytkownika jest 	znalezienie konkretnego elementu lub grupy elementów spełniających 	kryteria (często mętne i niekonkretne) wyszukiwania. Dlatego musi 	mieć możliwość wstępnego odrzucenia tych elementów, które mu 	z jakiś powodów nie pasują. Błędem jest brak podstawowych dla 	użytkownika informacji (np. serwis z ogłoszeniami sprzedaży 	mieszkań, który nie pokazuje na liście wyników metrażu ani 	lokalizacji! )</li>
<li>liczba znalezionych wyników – 	jeśli wyników jest mało, może to np. sugerować ograniczony 	asortyment w sklepie</li>
<li>przystawanie wyników do frazy 	wyszukiwania – jeśli w sklepie komputerowym na hasło: „notebook” 	na pierwsza strona zawiera tylko pokrowce na notebooki, może to 	sugerować, że firma sprzedaje tylko akcesoria</li>
<li>możliwości nawigacji i łatwość 	dokonania wyboru – jeśli wyników wyszukiwania jest dużo,  	zostawienie użytkownikowi możliwości tylko zmiany zapytania albo 	męczącego przebijania  się przez strony wyników nie jest dobrym 	pomysłem.</li>
</ul>
<p><strong>2. Redefinicja zapytania</strong></p>
<p>W zależności od uzyskanych wyników wyszukiwania, zwykle od pierwszego wrażenia jakości tych wyników, użytkownik może zdecydować się powtórzyć wyszukiwanie. Im więcej faz redefinicji, tym gorsze wrażenie klienta i większa szansa na opuszczenie sklepu. Zwłaszcza, jeśli użytkownik, w jego mniemaniu wpisał bardzo ogólną frazę, a nie dostał żadnych wyników.</p>
<p><strong>3. Filtracja</strong></p>
<p><img fetchpriority="high" decoding="async" class="alignleft size-medium wp-image-210" style="margin: 15px" src="http://solr.pl/wp-content/uploads/2010/08/filtrowanie-185x300.png" alt="" width="185" height="300">Rodzaj zwróconych wyników jest w porządku, pytanie, jak teraz użytkownik może ograniczyć ich liczbę do tych, które są szczególnie interesujące (czyli odrzucić te mniej ciekawe). W tym celu umożliwia się dalsze nawigowanie po wynikach wyszukiwania w oparciu o filtry. Tutaj zwykle zwracamy uwagę na:</p>
<ul>
<li>łatwość dodawania i usuwania 	filtru – zakładając, że użytkownik ma jedynie ogólne pojęcie 	czego szuka, należy się spodziewać, że będzie on wielokrotnie 	zmieniał kryteria wyszukiwania – niedopuszczalne są ścieżki 	nawigacji, gdzie jedyną metodą powrotu do wcześniej 	odfiltrowanych elementów jest przycisk „powrót” w 	przeglądarce, lub rozpoczęcie kolejnego wyszukiwania.</li>
<li>zależność filtrów od rodzaju 	wyszukiwania – szukając nowego komputera interesujący jest inny 	zestaw parametrów niż wybierając książkę. Chociaż brzmi to 	jak oczywistość, zbyt często można spotkać sytuacje, gdzie 	zmiana asortymentu sklepu nie pociąga za sobą zmian definicji 	filtrów, lub zestaw filtrów jest narzucony „z góry”. W 	efekcie pojawiają się opcje typu „kolor opon”.</li>
<li>podanie liczb określających 	liczbę wyników po zastosowaniu filtra – niedoceniana 	funkcjonalność, jednak pozwala na wybieranie przez użytkownika 	optymalnego sposobu filtrowania: jeśli koniecznie w notebooku muszę 	mieć wbudowaną kamerę, to filtr „Z wbudowaną kamerą (3)” od 	razu sugeruje, że wybór koloru będzie mniej ważny i nie ma sobie 	co nim zawracać głowy.</li>
</ul>
<p><strong>4. Sortowanie<br />
</strong></p>
<p><img decoding="async" class="alignleft size-full wp-image-211" style="margin: 15px" src="http://solr.pl/wp-content/uploads/2010/08/sortowanie.png" alt="" width="194" height="35">Pozwala się zająć klientowi przeglądaniem wyników w najwygodniejszej kolejności (np. od najtańszych produktów). W praktyce liczba opcji jest mocno ograniczona, np. Pomysł sortowania po cechach produktu może konfliktować z filtrowaniem.</p>
<p><strong>5. Przeglądanie Wyników</strong></p>
<p>Tutaj użytkownik już zapoznaje się z wybranymi produktami. Z punktu widzenia wyszukiwania to już dość nudny temat <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Warto jednak pamiętać o wygodnym powrocie do listy wyników: tu błędem jest np. automatyczny powrót na pierwszą stronę wyników, albo zmuszanie użytkownika do  przewijania strony w poszukiwaniu ostatnio oglądanego elementu.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2010/08/09/proces-wyszukiwania/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
