<?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>writer &#8211; Solr.pl</title>
	<atom:link href="https://solr.pl/tag/writer/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:12:06 +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; Solritas</title>
		<link>https://solr.pl/2010/09/27/szybkie-spojrzenie-solritas/</link>
					<comments>https://solr.pl/2010/09/27/szybkie-spojrzenie-solritas/#respond</comments>
		
		<dc:creator><![CDATA[Rafał Kuć]]></dc:creator>
		<pubDate>Mon, 27 Sep 2010 05:07:26 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[response]]></category>
		<category><![CDATA[response writer]]></category>
		<category><![CDATA[solr]]></category>
		<category><![CDATA[solritas]]></category>
		<category><![CDATA[szablon]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[velocity]]></category>
		<category><![CDATA[velocity response writer]]></category>
		<category><![CDATA[writer]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=36</guid>

					<description><![CDATA[Obserwując listy dyskusyjne możemy trafić na rozmowy o funkcjonalności Solr, której nazwa brzmi dość dziwnie &#8211; Solritas. Co to za funkcjonalność ? Jakie ma zastosowanie ? Aby poznać odpowiedzi na te pytania zapraszam do lektury dalszej części wpisu. Należy pamiętać,]]></description>
										<content:encoded><![CDATA[<p>Obserwując listy dyskusyjne możemy trafić na rozmowy o funkcjonalności Solr, której nazwa brzmi dość dziwnie &#8211; <em>Solritas</em>.  Co to za funkcjonalność ? Jakie ma zastosowanie ? Aby poznać odpowiedzi  na te pytania zapraszam do lektury dalszej części wpisu.</p>
<p><span id="more-36"></span></p>
<p>Należy pamiętać, iż opisywana funkcjonalność dostępna jest w Solr od wersji 1.4. Dokładniej, w Solr w wersji 1.4 oraz 1.4.1 funkcjonalność jest udostępniania w Solr, jako dodatek dostępny w katalogu <em>contrib</em>. Natomiast w wersji 4.0 (<em>trunk</em> w svn) jest to już jedna ze standardowych funkcjonalności.</p>
<h3><strong>Solritas, czyli co ?</strong></h3>
<p>Przeglądając plik <em>solrconfig.xml</em> dostarczany z przykładową konfiguracją najnowszych wersji Solr możemy trafić na następującą definicję:
</p>
<pre class="brush:xml">&lt;requestHandler name="/browse"&gt;
&nbsp;&nbsp; &lt;lst name="defaults"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="wt"&gt;velocity&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="v.template"&gt;browse&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="v.layout"&gt;layout&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="title"&gt;Solritas&lt;/str&gt;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="defType"&gt;dismax&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="q.alt"&gt;*:*&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="rows"&gt;10&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="fl"&gt;*,score&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="facet"&gt;on&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="facet.field"&gt;cat&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="facet.field"&gt;manu_exact&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="facet.mincount"&gt;1&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="qf"&gt;text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="hl"&gt;on&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="hl.fl"&gt;text features name&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="f.name.hl.fragsize"&gt;0&lt;/str&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;str name="f.name.hl.alternateField"&gt;name&lt;/str&gt;
&nbsp;&nbsp; &lt;/lst&gt;
&lt;/requestHandler&gt;</pre>
<p>Bliższe przyjrzenie się powyższej konfiguracji może dać już  odpowiedź osobie, która miała do czynienia z różnymi formatami  szablonów. Powyższy wpis definiuje handler oparty o <em>solr.SearchHandler</em>, ale z innym, niż można by było podejrzewać <em>response writerem</em> &#8211; <em>VelocityResponseWriter</em>. Umożliwia on przetwarzanie wyników odpowiedzi z wykorzystaniem systemu szablonów jakim jest <em>Velocity</em> (<a href="http://velocity.apache.org/" target="_blank" rel="noopener noreferrer">http://velocity.apache.org/</a>).  Dzięki wykorzystaniu takiego rozwiązania jesteśmy w stanie w bardzo  szybkim czasie stworzyć prototyp i zaprezentować wyniki wyszukiwania w  przystępny, dla np. użytkownika biznesowego, sposób. Nie ma konieczności  pisania od podstaw aplikacji wykorzystującej Solr &#8211; tworzymy własny  szablon i gotowe, możemy korzystać z Solr, który będzie opakowywał  wyniki wyszukiwania w nasz szablon.</p>
<h3><strong>Konfiguracja</strong></h3>
<p>Powyżej przedstawiona konfiguracja została skopiowana z  przykładowej konfiguracji dostarczanej z Solr. Co jednak oznaczają  poszczególne parametry i jakie mamy możliwości wpływania na zachowanie <em>Velocity</em> ?<strong> </strong></p>
<p>Aby zacząć korzystać z Solritas, należy wykonać kilka zmian w konfiguracji:</p>
<ol>
<li>Dodać informacje o tym, że chcemy wykorzystywać <em>VelocityResponseWriter.<br />
</em></li>
<li>Dodać  odpowiednią definicję handlera (określającą wykorzystanie odpowiedniego  formatu odpowiedzi i konfiguracji Velocity, na przykład taką jak  przedstawiona powyżej).</li>
<li>W przypadku korzystania z Solr w wersji  1.4.x należy zadbać o odpowiednie odpowiednie wersje bibliotek (należy  skopiować je z katalogu <em>/contrib/velocity/src/main/lib</em> do katalogu z bibliotekami rdzenia, w którym chcemy użyć Solritas). Te biblioteki to:
<ol>
<li>apache-solr-velocity-1.4.dev.jar</li>
<li>commons-beanutils-1.7.0.jar</li>
<li>commons-collections-3.2.1.jar</li>
<li>velocity-1.6.1.jar</li>
<li>velocity-tools-2.0-beta3.jar</li>
</ol>
</li>
</ol>
<p>Po spełnieniu powyższych warunków i uruchomieniu Solr możemy  sprawdzić, czy funkcjonalność działa. W tym celu należy dowolną metodą  (np. za pomocą przeglądarki) wejść na adres:  <em>http://localhost:8983/solr/browse</em>. Naszym oczom powinnien ukazać się  prosta formatka umożliwiająca wyszukiwanie, posiadająca funkcjonalność <em>autocomplete</em> oraz pokazująca prosty <em>faceting</em>.</p>
<h3><strong>Ale co z tymi parametrami ?<br />
</strong></h3>
<p><em>Solritas</em>, czy inaczej, <em>VelocityResponseWriter </em>posiada szereg parametrów pozwalających konfigurować jego zachowanie. Te parametry to:</p>
<ul>
<li><em>v.template</em> &#8211; nazwa szablonu Velocity,  który ma zostać użyty do wyświetlenia strony. Nazwę szablonu podajemy  bez rozszerzenia &#8217;.vm&#8217;. W przypadku braku tego parametru zostanie  wybrany domyślny szablon o nazwie <em>default</em>.</li>
<li><em>debugQuery</em> &#8211; podobnie jak w przypadku zwykłych zapytań przy  pomocy metody GET,  tak samo w tym wypadku istnieje możliwość pobrania  dodatkowych  informacji dotyczących przetwarzania zapytania. W przypadku  ustawienia  tego parametru na wartość <em>true</em>, oprócz dodatkowych informacji w stopce strony, każdy wynik będzie zawierał dodatkowe informacje diagnostyczne.</li>
<li><em>v.json</em> &#8211; parametr umożliwiający opakowanie odpowiedzi Velocity w funkcję JSON`a o nazwie podanej jako wartość parametru.</li>
<li><em>v.layout</em> &#8211; nazwa szablonu, który będzie zawierał szablon zdefiniowany w parametrze <em>v.template</em>. W tym wypadku zawartość szablonu zdefiniowanego w parametrze <em>v.template</em> zostanie umieszczona w zmiennej <em>$content</em> w celu użycia w szablonie zdefiniowanym w opisywanym parametrze.</li>
<li><em>v.base_dir</em> &#8211; określa katalog z którego mają być ładowane szablony. Wartość domyślna parametru to <em>conf/velocity/</em>.</li>
<li><em>v.properties</em> &#8211; określa plik z konfiguracją Velocity. Domyślna wartość parametru to <em>velocity.properties</em>.</li>
<li><em>v.contentsType</em> &#8211; ustawia nagłówek HTTP odpowiedzialny za przenoszenie informacji o rodzaju treści.</li>
</ul>
<h3><strong>Kontekst Velocity</strong></h3>
<p>Osoby,  które miały styczność z Velocity wiedzą, iż w tzw. kontekście można  umieszczać obiekty klas pomocniczych, ułatwiające generowanie strony  przez szablony. VelocityResponseWriter udostępnia w swoim kontekście  szereg takich właśnie helperów, pod odpowiednimi skrótami dostępne są  następujące klasy pomocnicze:</p>
<ul>
<li><em>esc </em>&#8211; instancja EscapeTool</li>
<li><em>date </em>&#8211; instancja ComparisonDateTool</li>
<li><em>list</em> &#8211; instancja ListTool</li>
<li><em>math </em>&#8211; instancja MathTool</li>
<li><em>number </em>&#8211; instancja NumberTool</li>
<li><em>page </em>&#8211; instancja PageTool</li>
<li><em>sort </em>&#8211; instancja SortTool</li>
<li><em>request </em>&#8211; obiekt klasy SolrQueryRequest</li>
<li><em>response </em>&#8211; obiekt klasy SolrQueryResponse</li>
</ul>
<p>Po więcej informacji na temat poszczególnych klas pomocniczych zapraszam na <a href="http://velocity.apache.org/" target="_blank" rel="noopener noreferrer">http://velocity.apache.org/</a>.</p>
<h3><strong>Słów kilka na koniec</strong></h3>
<p>Jeżeli  potrzebujemy szybko wygenerować graficzny interfejs użytkownika i  pokazać go, gdzieś dalej, to Solritas będzie bardzo dobrym rozwiązaniem.  Bez pisania dodatkowej warstwy jesteśmy w stanie szybko zdefiniować  szablon i pokazać wyniki wyszukiwania w formie bardziej przystępnej dla  na przykład osób nie technicznych.</p>
<p>Jako, że  jest to jeden z pierwszych wpisów otwierający serię &#8222;szybkich spojrzeń&#8221; na mniej  lub bardziej znane funkcjonalności Solr wszystkie uwagi, pomysły i  spostrzeżenia będą bardzo mile widziane. Zapraszam do komentowania.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2010/09/27/szybkie-spojrzenie-solritas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>CSVResponseWriter</title>
		<link>https://solr.pl/2010/08/03/csvresponsewriter/</link>
					<comments>https://solr.pl/2010/08/03/csvresponsewriter/#respond</comments>
		
		<dc:creator><![CDATA[Rafał Kuć]]></dc:creator>
		<pubDate>Tue, 03 Aug 2010 06:35:51 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[csv]]></category>
		<category><![CDATA[CSVResponseWriter]]></category>
		<category><![CDATA[odpowiedź]]></category>
		<category><![CDATA[response]]></category>
		<category><![CDATA[solr]]></category>
		<category><![CDATA[writer]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=15</guid>

					<description><![CDATA[Niedawno Solr otrzymał kolejną mała, aczkolwiek wartą wspomnienia funkcjonalność &#8211; kolejny, dostępny w standardowej dystrybucji format odpowiedzi &#8211; CSV. Postanowiłem napisać o tym kilka słów. Po skompilowaniu i wybudowaniu Solr w konfiguracji przykładowego wdrożenia (solrconfig.xml) musimy odkomentować następującą linię: &#60;queryResponseWriter]]></description>
										<content:encoded><![CDATA[<p>Niedawno Solr otrzymał kolejną mała, aczkolwiek wartą wspomnienia funkcjonalność &#8211; kolejny, dostępny w standardowej dystrybucji format odpowiedzi &#8211; CSV. Postanowiłem napisać o tym kilka słów.</p>
<p><span id="more-15"></span></p>
<p>Po skompilowaniu i wybudowaniu Solr w konfiguracji przykładowego wdrożenia (<em>solrconfig.xml</em>) musimy odkomentować następującą linię:
</p>
<pre class="brush:xml">&lt;queryResponseWriter name="csv"/&gt;
</pre>
<p>Po tym zostaje już tylko uruchomienie Solr i zaindeksowanie przykładowych danych. Na potrzeby tego wpisu wykorzystałem dane z pliku <em>hd.xml</em> znajdującego się wśród plików przykładowych.</p>
<p>Jako, że funkcjonalność jest naprawdę prosta stwierdziłem, iż wystarczy mi, jeżeli sprawdzę, czy działa <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Zadając zapytanie <code>q=*:*&amp;fl=id,name,popularity&amp;wt=csv</code> dostajemy następujące dane:
</p>
<pre class="brush:xml">id,name,popularity
SP2514N,Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133,6
6H500F0,Maxtor DiamondMax 11 - hard drive - 500 GB - SATA-300,6
</pre>
<p>To samo zapytanie (oczywiście, bez parametru <code>wt=csv</code>) generuje nam następującego xml`a:
</p>
<pre class="brush:xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;response&gt;
&lt;lst name="responseHeader"&gt;
   &lt;int name="status"&gt;0&lt;/int&gt;
   &lt;int name="QTime"&gt;0&lt;/int&gt;
   &lt;lst name="params"&gt;
      &lt;str name="q"&gt;*:*&lt;/str&gt;
      &lt;str name="fl"&gt;id,name,popularity&lt;/str&gt;
   &lt;/lst&gt;
&lt;/lst&gt;
&lt;result name="response" numFound="2" start="0"&gt;
&lt;doc&gt;
   &lt;str name="id"&gt;SP2514N&lt;/str&gt;
   &lt;str name="name"&gt;Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133&lt;/str&gt;
   &lt;int name="popularity"&gt;6&lt;/int&gt;
&lt;/doc&gt;
&lt;doc&gt;
   &lt;str name="id"&gt;6H500F0&lt;/str&gt;
   &lt;str name="name"&gt;Maxtor DiamondMax 11 - hard drive - 500 GB - SATA-300&lt;/str&gt;
   &lt;int name="popularity"&gt;6&lt;/int&gt;
&lt;/doc&gt;
&lt;/result&gt;
&lt;/response&gt;
</pre>
<h3>Na koniec</h3>
<p>Jeżeli chcemy szybko i bez zbędnych szczegółów dostać informacje z indeksu, a do tego nie chcemy bawić się w parsowanie formatu XML to format CSV wydaje się być całkiem rozsądną alternatywą. Należy jednak pamiętać, iż nowy <em>ResponseWriter </em>nie zwraca nam informacji takich jak na przykład ilość dokumentów pasujących do zapytania, czy czas odpowiedzi. Jeżeli jednak nie potrzebujemy tych informacji, format <em>CSVResponseWriter </em>może się przydać.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2010/08/03/csvresponsewriter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
