<?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>large &#8211; Solr.pl</title>
	<atom:link href="https://solr.pl/tag/large/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>Sat, 14 Nov 2020 08:47:11 +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 6.5 i pola typu large &#8211; szybkie spojrzenie</title>
		<link>https://solr.pl/2017/05/01/solr-6-5-i-pola-typu-large-szybkie-spojrzenie/</link>
					<comments>https://solr.pl/2017/05/01/solr-6-5-i-pola-typu-large-szybkie-spojrzenie/#respond</comments>
		
		<dc:creator><![CDATA[Rafał Kuć]]></dc:creator>
		<pubDate>Mon, 01 May 2017 07:46:43 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[document]]></category>
		<category><![CDATA[field]]></category>
		<category><![CDATA[large]]></category>
		<category><![CDATA[solr]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=722</guid>

					<description><![CDATA[Jak wiadomo Solr posiada różne możliwości jeżeli chodzi o cachowanie danych &#8211; filterCache dla filtrów, queryResultCache dla wyników zapytań oraz documentCache do cachowania zapytań do szybkiego ich pobierania. Skupimy się dzisiaj na tym ostatnim i co możemy zrobić, aby wykorzystać]]></description>
										<content:encoded><![CDATA[<p>Jak wiadomo Solr posiada różne możliwości jeżeli chodzi o cachowanie danych &#8211; <em>filterCache</em> dla filtrów, <em>queryResultCache</em> dla wyników zapytań oraz <em>documentCache</em> do cachowania zapytań do szybkiego ich pobierania. Skupimy się dzisiaj na tym ostatnim i co możemy zrobić, aby wykorzystać go bardziej optymalnie.</p>
<p><span id="more-722"></span></p>
<h3>Problem</h3>
<p>Kiedy <em>documentCache</em> włączony jest w konfiguracji, po pobraniu dokumentu z Lucene jest on umieszczany w pamięci i trzymany tam do chwili usunięcia z <em>documentCache</em> (czy to przez wielkość cache lub commit). Taka operacja może być dosyć kosztowna &#8211; szczególnie dla dużych dokumentów. Możemy wyobrazić sobie dokumenty, które reprezentują treść strony uzyskanej przez skanowanie tekstu z książki. Problem polega na tym, że każdy wpis w <em>documentCache</em>, jeżeli nie jest ponownie użyty kwalifikuje się jako śmieć. Im więcej śmieci tym więcej pracy musi wykonać garbage collector, a tym samym Solr traci cykle procesora na ten proces zamiast na obsługę zapytań i indeksowanie danych. Może się to oczywiście wiązać z gorszą wydajnością. Na szczęście, zaczynając od Solr 6.5 jesteśmy sobie w stanie z tym poradzić, przynajmniej dla dużych pól typu <em>stored</em>.</p>
<h3>Oznaczenie pola jako large</h3>
<p>Zaczynając od Solr 6.5 dostaliśmy możliwość dodania dodatkowego atrybutu do definicji pola. W przypadku, kiedy nasze pole tekstowe ustawione jest jako <em>stored=&#8221;true&#8221;</em> oraz <em>multiValued=&#8221;false&#8221;</em> możemy dodać do niego atrybut <em>large</em> przyjmujący wartości <em>true</em> lub <em>false</em> (domyślnie <em>false</em>). Tak zdefiniowane pole nie będzie automatycznie umieszczane w <em>documentCache</em>, a umieszczana będzie jedynie referencja do niego z możliwością późniejszego załadowania.</p>
<h3>Sprawdźmy różnicę</h3>
<p>Ze względu na to, że jest to wpis typu <em>szybkie spojrzenie</em> nie będziemy wgłębiać się w kod i szczegóły, a jedynie sprawdzimy dwie kolekcje z tymi samymi danymi i polami. Struktura kolekcji składać się będzie z następujących pól:</p>
<ul>
<li><em>id</em> &#8211; identtyfikator dokumentu,</li>
<li><em>name</em> &#8211; nazwa dokumentu,</li>
<li><em>body</em> &#8211; treść dokumentu, która w założeniach może być bardzo duża.</li>
</ul>
<p>Jedna z kolekcji będzie miała ustawiony atrybut <em>large=&#8221;true&#8221;</em> dla pola <em>body</em>. Dodatkowo zaindeksujemy kilka dokumentów w celu sprawdzenia zachowania się Solr w przypadku obu konfiguracji.</p>
<p>Jeżeli mielibyście ochotę przeprowadzić ten sam test, poniżej przedstawiamy komendy użyte do jego przeprowadzenia (wszystkie pliki pochodzą z naszego konta na Github (<a href="https://github.com/solrpl/">https://github.com/solrpl/</a>). Test polegał będzie na stworzeniu kolekcji, zaindeksowaniu danych, zadaniu zapytania, zebraniu statystyk. Powtórzymy go dla każdej z kolekcji za każdym razem uruchamiają nową, pustą instancję Solr. Wykorzystane komendy wyglądają następująco:
</p>
<pre class="brush:xml">$ mkdir /tmp/solr
$ mkdir /tmp/solr/collection_with_large
$ mkdir /tmp/solr/collection_without_large
$ wget https://github.com/solrpl/blog/tree/master/posts/large_field/data.xml /tmp/solr/data.xml
$ wget https://github.com/solrpl/blog/tree/master/posts/large_field/collection_with_large/managed-schema /tmp/solr/collection_with_large/managed-schema
$ wget https://github.com/solrpl/blog/tree/master/posts/large_field/collection_with_large/solrconfig.xml /tmp/solr/collection_with_large/solrconfig.xml
$ wget https://github.com/solrpl/blog/tree/master/posts/large_field/collection_without_large/managed-schema /tmp/solr/collection_without_large/managed-schema
$ wget https://github.com/solrpl/blog/tree/master/posts/large_field/collection_without_large/solrconfig.xml /tmp/solr/collection_without_large/solrconfig.xml
$ bin/solr zk upconfig -z localhost:9983 -n config_with_large -d /tmp/collection_with_large
$ bin/solr create_collection -c collection_with_large -n config_with_large -shards 1 -replicationFactor 1
$ curl -XPOST 'localhost:8983/solr/collection_with_large/update?commit=true' -H 'Content-Type:application/xml' --data-binary @/tmp/solr/data.xml
$ curl 'localhost:8983/solr/collection_with_large/select?q=*:*'</pre>
<p>A teraz stwórzmy drugą kolekcję używają pobranych danych:
</p>
<pre class="brush:xml">$ bin/solr zk upconfig -z localhost:9983 -n config_without_large -d /tmp/collection_without_large
$ bin/solr create_collection -c collection_without_large -n config_without_large -shards 1 -replicationFactor 1
$ curl -XPOST 'localhost:8983/solr/collection_without_large/update?commit=true' -H 'Content-Type:application/xml' --data-binary @/tmp/solr/data.xml
$ curl 'localhost:8983/solr/collection_without_large/select?q=*:*'</pre>
<p>Sprawdźmy teraz, jak wygląda wykorzystanie <em>documentCache</em> oraz co można znaleźć w jego środku. Tak wygląda&nbsp;<em>documentCache</em> w przypadku kolekcji z polem <em>body</em> oznaczonym jako <em>large=&#8221;true&#8221;</em>:</p>
<p><a href="http://solr.pl/wp-content/uploads/2017/04/field_with_large.png"><img decoding="async" class="aligncenter wp-image-3945 size-medium" src="http://solr.pl/wp-content/uploads/2017/04/field_with_large-300x65.png" alt="" width="300" height="65"></a></p>
<p>A tak wygląda wykorzystanie <em>documentCache</em> z polem <em>body</em> bez oznaczenia jako <em>large=&#8221;true&#8221;</em>:</p>
<p><a href="http://solr.pl/wp-content/uploads/2017/04/field_without_large.png"><img decoding="async" class="aligncenter wp-image-3946 size-medium" src="http://solr.pl/wp-content/uploads/2017/04/field_without_large-300x70.png" alt="" width="300" height="70"></a></p>
<p>Jak łatwo zauważyć pole oznaczone jako <em>large=&#8221;true&#8221;</em> nie zostało dodane do <em>documentCache</em> bezpośrednio, a została dodana &#8222;leniwa&#8221; referencja, która może być wykorzystana w razie potrzeby. Pozwala to na zmniejszenie rozmiaru dokumentów umieszczonych w <em>documentCache</em>, a tym samym mniejsze obciążenie pamięci i mniej pracy dla garbage collectora, co powinno przełożyć się na trochę lepszą wydajność Solr.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2017/05/01/solr-6-5-i-pola-typu-large-szybkie-spojrzenie/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
