<?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>1.5 &#8211; Solr.pl</title>
	<atom:link href="https://solr.pl/tag/1-5/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>Wed, 11 Nov 2020 08:12:42 +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>Sortowanie po wartościach funkcji w Solr (SOLR-1297)</title>
		<link>https://solr.pl/2011/02/28/sortowanie-po-wartosciach-funkcji-w-solr-solr-1297/</link>
					<comments>https://solr.pl/2011/02/28/sortowanie-po-wartosciach-funkcji-w-solr-solr-1297/#respond</comments>
		
		<dc:creator><![CDATA[Rafał Kuć]]></dc:creator>
		<pubDate>Mon, 28 Feb 2011 08:12:05 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[1.5]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[function sorting]]></category>
		<category><![CDATA[funkcje]]></category>
		<category><![CDATA[solr]]></category>
		<category><![CDATA[SOLR-1297]]></category>
		<category><![CDATA[sorting]]></category>
		<category><![CDATA[sortowanie po funkcjach]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=203</guid>

					<description><![CDATA[Solr w wersji 3.1 i późniejszych otrzymał jakiś czas temu bardzo ciekawą funkcjonalność &#8211; sortowanie na podstawie wartości pomocą funkcji. Co nam to daje ? W zasadzie kilka ciekawych możliwości, o których poniżej. Na początek Pierwszy z przykładów, których przychodzi]]></description>
										<content:encoded><![CDATA[<p>Solr w wersji 3.1 i późniejszych otrzymał jakiś czas temu bardzo ciekawą funkcjonalność &#8211; sortowanie na podstawie wartości pomocą funkcji. Co nam to daje ? W zasadzie kilka ciekawych możliwości, o których poniżej.</p>
<p><span id="more-203"></span></p>
<h3>Na początek</h3>
<p>Pierwszy z przykładów, których przychodzi mi do głowy, być może ze względu na projekt nad którym  pracowałem jakiś czas temu, to sortowanie po odległości pomiędzy dwoma punktami. Do tej pory, aby zaimplementować taką funkcjonalność konieczne była zmiany w Solr (np. wdrożenie <em>LocalLucene </em>i <em>LocalSolr</em>). Korzystając z Solr 3.1 i późniejszych, możemy sortować wyniki wyszukiwania za pomocą wartości zwracanych przez zdefiniowane funkcje. Na przykład,w Solr mamy dostępną funkcję <em>dist</em> wyliczającą odległość pomiędzy dwoma punktami. Jeden z wariantów funkcji to funkcja przyjmująca pięć parametrów: algorytm i dwie pary punktów. Jeżeli, przy pomocy tej funkcji, chcielibyśmy posortować wyniki wyszukiwania rosnąco od punktu o długości i szerokości geograficznej 0,0, to wysyłając parametr <em>sort</em> w następującej postaci otrzymalibyśmy właśnie tak posortowane wyniki:
</p>
<pre class="brush:xml">...sort=dist(2, geo_x, geo_y, 0, 0) asc</pre>
<p>Podejrzewam, że najczęściej wykorzystywanymi wartościami pierwszego parametru będą:</p>
<ul>
<li><em>1</em> &#8211; kalkulacja odległości na podstawie metryki Manhattan</li>
<li><em>2</em> &#8211; kalkulacja odległości euklidesowej</li>
</ul>
<h3>Kilka słów o wydajności</h3>
<p>Wszystko pięknie, tylko jak to wygląda pod kątem wydajności ? Przeprowadziłem dwa proste testy.</p>
<p>Podczas pierwszego testu zaindeksowałem 200 tysięcy dokumentów składających się z czterech pól: identyfikatora (pole liczbowe), opis (pole typu <em>text</em>) oraz x i y (dwa pola liczbowe). Żeby nie zaciemniać wyników testu do sortowania wykorzystałem jedną z prostszych funkcji dostępnych obecnie w Solr &#8211; <em>sum</em> &#8211; sumującą dwa argumenty. Tak zdefiniowane sortowanie porównałem z sortowaniem domyślnym, czyli po wartości <em>score</em>. Poniżej tabela z wynikami:</p>
[table “11” not found /]<br />

<p>Kolejny test polegał na porównaniu sortowania po polu typu <em>string</em> do sortowania z wykorzystaniem funkcji. Przebieg testu był prawie identyczny, jak przebieg pierwszego testu &#8211; indeksacja 200.000 dokumentów (z dodatkowym polem: opis_sort<em> </em>typu <em>string</em>) oraz wykorzystanie funkcji <em>sum</em>. Poniżej tabela z wynikami:</p>
[table “12” not found /]<br />

<p>Na podstawie powyższego testu widać, iż sortowanie z wykorzystaniem funkcji jest zdecydowanie wolniejsze od domyślnego sortowania (czego można było się spodziewać). Sortowanie to jest także wolniejsze od sortowania po polu typu <em>string</em>, jednak tutaj różnica nie jest już tak znaczna, jak w poprzednim przypadku.</p>
<h3>Kilka słów na koniec</h3>
<p>Oczywiście powyższy test tylko prześlizguje się po temacie wydajności sortowania z wykorzystaniem funkcji w Solr, jednak pokazuje prostą zależność. Biorąc pod uwagę to, iż nie jest to sortowanie domyśle, a dające nam naprawdę duże możliwości konfiguracyjne wydaje mi się, że jest to funkcjonalność warta zapamiętania. Na pewno będzie sprawdzać się wtedy, kiedy wymagania mówią, iż musimy sortować po wartościach zmieniających się zarówno w zależności od zapytania, jak i od stanu indeksu &#8211; tak jak w przypadku sortowania po dystansie od podanego przez użytkownika punktu.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2011/02/28/sortowanie-po-wartosciach-funkcji-w-solr-solr-1297/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
