<?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>5 &#8211; Solr.pl</title>
	<atom:link href="https://solr.pl/tag/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>Fri, 13 Nov 2020 21:25:40 +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>Solr 5 &#8211; JSON API, część pierwsza</title>
		<link>https://solr.pl/2015/12/21/solr-5-json-api-czesc-pierwsza/</link>
					<comments>https://solr.pl/2015/12/21/solr-5-json-api-czesc-pierwsza/#respond</comments>
		
		<dc:creator><![CDATA[Rafał Kuć]]></dc:creator>
		<pubDate>Mon, 21 Dec 2015 21:25:17 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[5]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[solr]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=678</guid>

					<description><![CDATA[Solr 5 wprowadził wiele zmian do świata Solr, zarówno w kwestii API, jak i samych funkcjonalności. Jedną z wprowadzonych nowości było wprowadzenie API opartego o JSON pozwalającego na zadawanie zapytań w sposób trochę bardziej przyjazny człowiekowi, przynajmniej porównując do długich]]></description>
										<content:encoded><![CDATA[<p>Solr 5 wprowadził wiele zmian do świata Solr, zarówno w kwestii API, jak i samych funkcjonalności. Jedną z wprowadzonych nowości było wprowadzenie API opartego o JSON pozwalającego na zadawanie zapytań w sposób trochę bardziej przyjazny człowiekowi, przynajmniej porównując do długich zapytań opartych o zapytania URI. W tym poście postaramy przybliżyć możliwości korzystania z tego API.</p>
<h2><span id="more-678"></span><br />
Zadawanie zapytań</h2>
<p>Jestem pewien, że wiesz jak zadaje się zapytania do Solr, tak jak jesteśmy przyzwyczajeni. Zatem, aby dostać dokumenty, które mają term <em>solr</em> w polu <em>_text_</em> moglibyśmy użyć następującej komendy:</p>
<pre class="brush:xml">curl -XGET 'localhost:8983/solr/gettingstarted/select?q=_text_:solr&amp;indent=true'
</pre>
<p>Gwoli wyjaśnienia &#8211; korzystam z jednego z przykładów dostarczonych wraz z Solr (<em>schemaless</em>), a zaindeksowane dane to dokumenty znajdujące się w katalogu <em>docs</em> dostarczanym razem z Solr.</p>
<p>Oczywiście, powyższe zapytanie można zadać także używając JSON API. Aby Solr zwrócił nam dokładnie te same wyniki wyszukiwania, które dostaliśmy w przypadku zapytania powyżej, skorzystalibyśmy z następującej komendy:</p>
<pre class="brush:xml">curl -XGET 'localhost:8983/solr/gettingstarted/query' -d '{
 "query":"_text_:solr"
}'
</pre>
<p>Przyjemne i proste &#8211; jak widać, wszystko co musimy zrobić, to przekazać obiekt JSON jako payload żądania, który będzie posiadał pole <em>query</em>, za pomocą którego przekazujemy nasze zapytanie. Taki obiekt wysłaliśmy do handlera <em>/query</em> ze względu, że skonfigurowany jest, aby domyślnie odpowiadać w formacie JSON. Oczywiście moglibyśmy skorzystać z handlera <em>/select</em>, ale wtedy odpowiedź zwrócona zostałaby w formacie XML.</p>
<p>Jeżeli chodzi o zadawanie zapytań, to zamiast przekazywania obiektu JSON, możemy przekazać standardowe parametry. Dokładnie tak, nie musimy przekazywać ich jako parametrów URI, ale w ciele żądania:</p>
<pre class="brush:xml">curl -XGET 'localhost:8983/solr/gettingstarted/query' -d 'q=_text_:solr'
</pre>
<p>Tym razem, nie mamy obiektu JSON. Standardowy parametr <em>q</em> został przekazany w ciele żądania i przesłany do handlera <em>/query</em>. Jeżeli chcemy przekazać więcej parametrów oddzielamy je znakiem <em>&amp;</em>.</p>
<h2>Stronnicowanie</h2>
<p>Oczywiście, korzystając z JSON API możemy także kontrolować stronicowanie. W tym celu korzystamy z dwóch parametrów &#8211; <em>limit</em> oraz <em>offset</em>. Pierwszy z nich, <em>limit</em> definiuje maksymalną liczbę dokumentów jaką Solr może zwrócić. Parametr <em>offset</em> odpowiedzialny jest za określenie od którego dokumentu wyniki wyszukiwania mają być pokazywane. Na przykład, aby dostać maksymalnie 20 dokumentów zaczynając od jedenastego wykorzystalibyśmy następujące zapytanie:</p>
<pre class="brush:xml">curl -XGET 'localhost:8983/solr/gettingstarted/query' -d '{
 "query":"_text_:solr",
 "limit":20,
 "offset":10
}'
</pre>
<h2>Sortowanie</h2>
<p>Kolejna rzecz to możliwość sortowania wyników wyszukiwania &#8211; oczywiście, także dostępna. Aby posortować nasze wyniki wyszukiwania na podstawie pola o nazwie <em>id</em> malejąco użylibyśmy następującego zapytania:</p>
<pre class="brush:xml">curl -XGET 'localhost:8983/solr/gettingstarted/query' -d '{
 "query":"_text_:solr",
 "sort":"id desc"
}'
</pre>
<p>Jak widać definicja sortowania jest taka sama, jak w przypadku sortowania w kiedy korzystamy z parametrów URI i parametru <em>sort</em>.</p>
<h2>Filtrowanie</h2>
<p>Na koniec zostawiliśmy sobie filtrowanie. Do filtrowania wykorzystujemy właściwość <em>filter</em> obiekty JSON przesyłanego w ciele żądania. Na przykład zapytanie zawężąjące wyniki wyszukiwania tylko do tych dokumentów, które mają wartość <em>text/html</em> w polu <em>content_type</em> wyglądałoby następująco:</p>
<pre class="brush:xml">curl -XGET 'localhost:8983/solr/gettingstarted/query' -d '{
 "query":"_text_:solr",
 "filter":"content_type:text/html"
}'
</pre>
<h2>Co dalej?</h2>
<p>Jak widać, JSON API w Solr jest bardzo przyjemne i proste w wykorzystaniu pozwalając nam na definiowanie zapytań z pewną strukturą. W następnym wpisie postaramy się przybliżyć kolejną możliwość JSON API, czyli faceting. Postaramy się pokazać różnice pomiędzy starą implementacją obecną w Solr już od bardzo dawna, a nową, wprowadzoną stosunkowo niedawno.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2015/12/21/solr-5-json-api-czesc-pierwsza/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Solr 5: Ograniczenie wykorzystania sieci przez replikację</title>
		<link>https://solr.pl/2015/01/26/solr-5-ograniczenie-wykorzystania-sieci-przez-replikacje/</link>
					<comments>https://solr.pl/2015/01/26/solr-5-ograniczenie-wykorzystania-sieci-przez-replikacje/#respond</comments>
		
		<dc:creator><![CDATA[Rafał Kuć]]></dc:creator>
		<pubDate>Mon, 26 Jan 2015 21:17:54 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[5]]></category>
		<category><![CDATA[5.0]]></category>
		<category><![CDATA[replikacja]]></category>
		<category><![CDATA[solr]]></category>
		<category><![CDATA[throttling]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=652</guid>

					<description><![CDATA[W sytuacji, kiedy nasz indeks jest duży (lub jest ich kilka) w chwili, kiedy konieczna jest pełna replikacja Solr potrafi wykorzystać całą dostępną przepustowość łącza (o ile dyski dadzą radę). W pewnych sytuacjach jest to pożądane, w innych nie. Podczas]]></description>
										<content:encoded><![CDATA[<p>W sytuacji, kiedy nasz indeks jest duży (lub jest ich kilka) w chwili, kiedy konieczna jest pełna replikacja Solr potrafi wykorzystać całą dostępną przepustowość łącza (o ile dyski dadzą radę). W pewnych sytuacjach jest to pożądane, w innych nie. Podczas gdy inne kolekcje serwują zapytania, nie chcielibyśmy, aby jedna z nich wykorzystała całą przepustowość sieci. Na szczęście wraz z premierą Solr 5.0 dostajemy w nasze ręce możliwość ograniczenia wykorzystania sieci przez replikację Solr.</p>
<p><span id="more-652"></span></p>
<p>Do pokazania, jak działa nowa funkcjonalność Solr porównajmy dwie sytuacje &#8211; kopiowanie indeksu bez żadnych limitów oraz kopiowanie indeksu podczas ustawionego limitu. W tym celu weźmiemy indeks mający około 2GB i zobaczymy jak wygląda wykorzystanie sieci podczas domyślnej konfiguracji replikacji oraz wtedy, kiedy mamy ustawione limity. Do tego celu wykorzystamy wdrożenie oparte o SolrCloud. Należy jednak pamiętać, iż sposób ten działa także we wdrożeniach opartych o architekturę master &#8211; slave.</p>
<h3>Replikacja bez limitów</h3>
<p>Do replikacji bez limitów wykorzystujemy następującą konfigurację:</p>
<pre class="brush:xml">&lt;requestHandler name="/replication" class="solr.ReplicationHandler"&gt;
&lt;/requestHandler&gt;
</pre>
<p>A tak wygląda wykorzystanie sieci podczas replikacji:</p>
<p><a href="http://solr.pl/wp-content/uploads/2015/01/replication_not_throttled.png"><img fetchpriority="high" decoding="async" class="aligncenter wp-image-3537 size-full" src="http://solr.pl/wp-content/uploads/2015/01/replication_not_throttled.png" alt="replication_not_throttled" width="552" height="192"></a></p>
<h3>Replikacja z limitami</h3>
<p>Do replikacji z limitami wykorzystujemy następującą konfigurację:</p>
<pre class="brush:xml">&lt;requestHandler name="/replication" class="solr.ReplicationHandler"&gt;
&nbsp;&lt;lst name="defaults"&gt;
&nbsp; &lt;str name="maxWriteMBPerSec"&gt;0.1&lt;/str&gt;
&nbsp;&lt;/lst&gt;
&lt;/requestHandler&gt;
</pre>
<p>Wykorzystanie sieci w chwili replikacji wygląda następująco:</p>
<p><a href="http://solr.pl/wp-content/uploads/2015/01/replication_throttled.png"><img decoding="async" class="aligncenter wp-image-3532 size-large" src="http://solr.pl/wp-content/uploads/2015/01/replication_throttled-1024x347.png" alt="replication_throttled" width="512" height="173"></a>Jak widać różnica pomiędzy dwoma scenariuszami jest znaczna.</p>
<h3>Podsumowanie</h3>
<p>Jak widać sama konfiguracja jest banalna i działa. Oczywiście działa nie tylko w przypadku wdrożenia opartego o SolrCloud, ale także w bardziej&nbsp;<em>tradycyjnym</em> master &#8211; slave. Jedyne czego mi teraz brakuje, to możliwości kontroli za pomocą dedykowanego API, ale to może w przyszłości <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;" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2015/01/26/solr-5-ograniczenie-wykorzystania-sieci-przez-replikacje/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
