<?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>update &#8211; Solr.pl</title>
	<atom:link href="https://solr.pl/tag/update/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 18:44:55 +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 3.1: JSON Update Handler</title>
		<link>https://solr.pl/2011/04/18/solr-3-1-json-update-handler/</link>
					<comments>https://solr.pl/2011/04/18/solr-3-1-json-update-handler/#respond</comments>
		
		<dc:creator><![CDATA[Rafał Kuć]]></dc:creator>
		<pubDate>Mon, 18 Apr 2011 17:41:16 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[file format]]></category>
		<category><![CDATA[handler]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[solr]]></category>
		<category><![CDATA[update]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=234</guid>

					<description><![CDATA[W związku z pojawieniem się Solr 3.1 postanowiłem przyjrzeć się funkcjonalności rozszerzającej listę formatów za pomocą których możemy uaktualniać indeksy. Do tej pory mieliśmy do wyboru trzy rodzaje formatów za pomocą których mogliśmy dostarczać dane &#8211; XML, CSV oraz tzw.]]></description>
										<content:encoded><![CDATA[<p>W związku z pojawieniem się <a href="http://solr.pl/2011/03/31/lucene-i-solr-3-1/" target="_blank" rel="noopener noreferrer">Solr 3.1</a> postanowiłem przyjrzeć się funkcjonalności rozszerzającej listę formatów za pomocą których możemy uaktualniać indeksy. Do tej pory mieliśmy do wyboru trzy rodzaje formatów za pomocą których mogliśmy dostarczać dane &#8211; XML,  CSV oraz tzw. JavaBin. Wraz z pojawieniem się Solr 3.1 wprowadzono czwarty format &#8211; JSON.</p>
<p><span id="more-234"></span></p>
<h3>Kilka słów na początek</h3>
<p><em>JsonUpdateRequestHandler</em>, bo tak nazywa się nowy handler, pozwala na przesyłanie danych w formacie JSON`a, co teoretycznie powinno przełożyć się na mniejszą ilość danych przesyłanych przez sieć oraz na zwiększoną szybkość indeksowania, jako, że parser JSON`a jest teoretycznie szybszy, niż parsery XML. Jednak wydajność zostawmy sobie na koniec.</p>
<h3>Konfiguracja</h3>
<p>Zacznijmy od zdefiniowania handlera w celu jego wykorzystania. Aby to zrobić należy do pliku <em>solrconfig.xml</em> dodać następujący wpis (jeżeli korzystacie z domyślnego pliku <em>solrconfig.xml</em> dołączonego do Solr 3.1 ten handler jest już zdefiniowany):
</p>
<pre class="brush:xml">&lt;requestHandler name="/update/json" class="solr.JsonUpdateRequestHandler" startup="lazy" /&gt;</pre>
<p>Powyższy wpis definiuje nowy handler ładowany przy pierwszym odwołaniu do niego (<em>startup=&#8221;lazy&#8221;</em>).</p>
<h3>Indeksowanie</h3>
<p>Kolejny krok to przygotowanie danych do zaindeksowania &#8211; oczywiście w formacie JSON. Poniżej przykład pokazujący dwa dokumenty w jednym pliku nazwanym <em>dane.json</em>:
</p>
<pre class="brush:plain">{

"add": {
  "doc": {
    "id" : "123456788",
    "region" : ["abc","def"],
    "name" : "ABCDEF",
  }
}

,
"add": {
  "doc": {
    "id" : "123456789",
    "region" : ["abc","def"],
    "name" : "XYZMN",
  }
}

}</pre>
<p>Tak przygotowany plik możemy wysłać na adres <em>/update/json</em> i tym samym zaindeksować. Należy pamiętać o wysłaniu polecenia <em>commit</em> pod odpowiedni adres (standardowo <em>/update</em>) w celu zapisania zmian w indeksie.</p>
<h3>Kilka słów o wydajności</h3>
<p>Na sam koniec zostawiłem sobie to, co mnie tak naprawdę najbardziej interesuje &#8211; wydajność nowego handlera. Zgodnie z informacjami zapisanymi w systemie JIRA można się spodziewać, iż <em>JsonUpdateRequestHandler </em>będzie szybszy od swojego odpowiednika przetwarzającego pliki w formacie XML. Żeby to sprawdzić, przygotowałem pliki o wielkości 10.000, 100.000 oraz 1.000.000 dokumentów, które zawierały identyfikator (pole typu <em>String</em>), dwa regiony (pole typu <em>String</em>, wielowartościowe) oraz nazwę (pole typu <em>Text</em>). Jeden plik został zapisany analogicznie do pokazanego wcześniej przykładu formatu JSON, drugi plik został zapisany w formacie XML, trzeci został zapisany w formacie CSV. Wszystkie pliki były następnie indeksowane. Poniżej przedstawiam wynik tego prostego testu:</p>
[table “9” not found /]<br />

<p>Wnioski nasuwają się same. Po pierwsze plik XML z danymi jest stosunkowo większy od tego, który zapisany został w formacie JSON`a (różnica to około 35%). Natomiast plik zapisany w formacie JSON jest jednak większy (czego należało się spodziewać) od tego, który zapisujemy w CSV. Jeżeli przesyłamy dane nie w sieci lokalnej, to wielkość ta ma znaczenie &#8211;  różnica w wielkości jest na tyle znacząca, iż warto się zastanowić nad zmianą z XML do któregoś z formatów wymagających mniej miejsca na dysku.</p>
<h3>Czas indeksacji</h3>
<p>Kolejna sprawa, to czas indeksowania. Podpierając się wynikami tego prostego testu można stwierdzić, iż <em>JsonUpdateRequestHandler</em> jest nieznacznie (około 7 &#8211; 9%) szybszy od <em>XmlUpdateRequestHandler</em>`a. Jak widać, podobna różnica jest w przypadku <em>JsonUpdateRequestHandler</em> oraz <em>CSVRequestHandler</em>, gdzie handler operujący na plikach w  formacie CSV jest szybszy od swojego odpowiednika operującego na  formacie JSON o około 7 do 9%. Miejmy nadzieję, iż kiedy kiedy biblioteka <a href="http://labs.apache.org/labs.html" target="_blank" rel="noopener noreferrer">noggit</a> wyjdzie z <em>Apache Labs</em> jej wydajność będzie jeszcze większa, a tym samym <em>JsonUpdateRequestHandler</em> będzie jeszcze szybszy.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2011/04/18/solr-3-1-json-update-handler/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
