<?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>Marek Rogoziński &#8211; Solr.pl</title>
	<atom:link href="https://solr.pl/author/negativ/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>Thu, 12 Nov 2020 11:09:31 +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>Losowe dokumenty z wyniku wyszukiwania (i rozwiązanie konkursu!)</title>
		<link>https://solr.pl/2013/04/02/losowe-dokumenty-z-wyniku-wyszukiwania-i-rozwiazanie-konkursu/</link>
					<comments>https://solr.pl/2013/04/02/losowe-dokumenty-z-wyniku-wyszukiwania-i-rozwiazanie-konkursu/#respond</comments>
		
		<dc:creator><![CDATA[Marek Rogoziński]]></dc:creator>
		<pubDate>Tue, 02 Apr 2013 10:08:58 +0000</pubDate>
				<category><![CDATA[Ogólna]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=503</guid>

					<description><![CDATA[A teraz dwie sroki za ogon &#8211; nowy artykuł i rozdanie w naszym małym&#160;konkursie, gdzie można było wygrać elektroniczną wersję książki Apache Solr 4 Cookbook. W artykule chcielibyśmy pokazać, jak zaimplementować losową kolejność dokumentów w wynikach zapytania zwracanego przez Apache]]></description>
										<content:encoded><![CDATA[<p>A teraz dwie sroki za ogon &#8211; nowy artykuł i rozdanie w naszym małym&nbsp;<a href="http://solr.pl/en/2013/03/15/win-free-copies-of-packts-new-book-on-apache-solr/">konkursie</a>, gdzie można było wygrać elektroniczną wersję książki <a href="http://solr.pl/en/solr-4-0-cookbook-2/">Apache Solr 4 Cookbook</a>. W artykule chcielibyśmy pokazać, jak zaimplementować losową kolejność dokumentów w wynikach zapytania zwracanego przez Apache Solr. Nasz przykład jest rozwiązaniem rzeczywistego problemu &#8211; właśnie dzięki niemu wylosujemy dwóch zwycięzców naszego <a href="http://solr.pl/en/2013/03/15/win-free-copies-of-packts-new-book-on-apache-solr/">konkursu</a>. Autorzy komentarzy, którzy znajdą się na początku wyników wyszukiwania otrzymają naszą nagrodę.</p>
<p><span id="more-503"></span></p>
<h2>Dokumenty</h2>
<p>Nasze dokumenty zawierają informację o uczestnikach konkursu &#8211; ich <em>id</em>, imię/nick (jako pole <em>author</em>) oraz pole <em>email</em>. Dla przykładu jeden rekord może wyglądać w następujący sposób:
</p>
<pre class="brush:xml">&lt;doc&gt;
  &lt;field name="id"&gt;1&lt;/id&gt;
  &lt;field name="author"&gt;Solr.pl author&lt;/field&gt;
  &lt;field name="email"&gt;blog(at)solr.pl&lt;/field&gt;
&lt;/doc&gt;</pre>
<p>Nasze bardzo &#8222;big data&#8221; zawiera <strong>19</strong> rekordów, może powinniśmy użyć map/reduce? :).</p>
<h2>Schema</h2>
<p>Plik <em>schema.xml</em> opisujący strukturę indeksu jest również bardzo prosty. W naszym przypadku zawiera następujące pola:
</p>
<pre class="brush:xml">&lt;field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /&gt;
&lt;field name="author" type="text_general" indexed="true" stored="true"/&gt;
&lt;field name="email" type="text_general" indexed="true" stored="true"/&gt;</pre>
<h2>Dodatkowa konfiguracja</h2>
<p>Powinniśmy upewnić się się, że plik <em>schema.xml</em> zawiera następujące definicje typu i pola:
</p>
<pre class="brush:xml">&lt;fieldType name="random" class="solr.RandomSortField" indexed="true" /&gt;
&lt;dynamicField name="random_*" type="random" /&gt;</pre>
<p>W przykładowym pliku <em>schema.xml</em> dostarczanym przez Solr ten typ i definicja pola są dostępne domyślnie. Będziemy potrzebować tych definicji do generowania losowej kolejności wyników.</p>
<h2>Wykonywanie zapytań z losowym porządkiem sortowania</h2>
<p>Tworzenie zapytań z losowym porządkiem wyników jest trochę nietypowe. Budujemy zapytanie jak zwykle z wyjątkiem definicji sortowania wyników. Parametr <em>sort</em> używa zdefiniowanego wcześniej dynamicznego pola z prefiksem <em>random</em>. Na przykład:
</p>
<pre class="brush:bash">localhost:8983/solr/competition/select?q=*:*&amp;sort=random_12939291%20desc</pre>
<h2>Jak to działa?</h2>
<p>Solr wylicza kolejność dokumentów bazując na nazwie pola dynamicznego oraz na numerze wersji indeksu. Oznacza to, że za każdym razem, gdy używamy tego samego pola na tym samym indeksie (jeżeli indeks nie zmienił się pomiędzy zapytaniami), otrzymamy te same rezultaty. To wada tej metody, chociaż może okazać się przydatna w pewnych okolicznościach. Na przykład stronicowanie &#8211; nie chcemy dostać zdublowanych wyników na różnych stronach, prawda? Z powodu powyższego za każdym razem powinniśmy generować nową nazwę pola przesyłając do Solr zapytanie z naszej aplikacji.</p>
<h2>A taraz &#8211; wyniki konkursu!</h2>
<p>W losowaniu użyliśmy podanego poniżej zapytania. Liczba użyta w nazwie pola dynamicznego jest absolutnie losowa i została wygenerowana poprzez zadanie następującego pytania: &#8222;Tato, możesz mi podać kilka dowolnych liczb?&#8221; :). Tak więc nasze zapytanie uzyskało formę:
</p>
<pre class="brush:bash">localhost:8983/solr/collection1/select?q=*:*&amp;indent=true&amp;rows=2&amp;sort=random_3721117253841%20desc</pre>
<p>Co dało następujące wyniki:
</p>
<pre class="brush:xml">&lt;result name="response" numFound="19" start="0"&gt;
  &lt;doc&gt;
    &lt;str name="id"&gt;9&lt;/str&gt;
    &lt;str name="author"&gt;Rajeev Srivastava&lt;/str&gt;
    &lt;str name="email"&gt;[CENSORED]&lt;/str&gt;
    &lt;long name="_version_"&gt;1431017731370516481&lt;/long&gt;&lt;/doc&gt;
  &lt;doc&gt;
    &lt;str name="id"&gt;8&lt;/str&gt;
    &lt;str name="author"&gt;Evgeny&lt;/str&gt;
    &lt;str name="email"&gt;[CENSORED]&lt;/str&gt;
    &lt;long name="_version_"&gt;1431017731370516480&lt;/long&gt;&lt;/doc&gt;
&lt;/result&gt;</pre>
<h2>Zwycięzcy</h2>
<ul>
<li><strong>Rajeev</strong></li>
<li><strong>Evgeny</strong></li>
</ul>
<p>Gratulujemy! Skontaktujemy się z Wami w najbliższym czasie z dalszymi informacjami, w jaki sposób możecie otrzymać nagrodę. Jeszcze raz: gratulacje! Do wszystkich uczestników: Dziękujemy za udział i za Wasze komentarze.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2013/04/02/losowe-dokumenty-z-wyniku-wyszukiwania-i-rozwiazanie-konkursu/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SolrCloud HOWTO</title>
		<link>https://solr.pl/2013/03/11/solrcloud-howto/</link>
					<comments>https://solr.pl/2013/03/11/solrcloud-howto/#respond</comments>
		
		<dc:creator><![CDATA[Marek Rogoziński]]></dc:creator>
		<pubDate>Mon, 11 Mar 2013 11:06:12 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=495</guid>

					<description><![CDATA[Co jest najważniejszą zmianą w wersji 4.x Apache Solr? Myślę, że takich zmian jest wiele, ale SolrCloud jest czymś, co zdecydowanie zmienia architekturę wdrożeń. Do tej pory większe instalacje użerały się z problemem &#160;single point of failure (SPOF) – istniał]]></description>
										<content:encoded><![CDATA[<p>Co jest najważniejszą zmianą w wersji 4.x Apache Solr? Myślę, że takich zmian jest wiele, ale SolrCloud jest czymś, co zdecydowanie zmienia architekturę wdrożeń. Do tej pory większe instalacje użerały się z problemem &nbsp;<i>single point of failure</i> (SPOF) – istniał tylko jeden serwer master i gdy ten serwer ulegał uszkodzeniu, cały cluster tracił zdolność przyjmowania nowych danych. Oczywiście można było próbować opcji z wieloma serwerami master, gdzie pojedynczy serwer był odpowiedzialny tylko za część danych, ale ciąle SPOF był obecny. Nawet, gdy wszystko działało poprawnie, ze względu na odstęp między operacjami commit, oraz ze względu na fakt, że instancje slave sprawdzały dostępność nowych danych co pewien okres, rozwiązanie było dalekie od ideału &#8211; nowe dane były widoczne dopiero po paru(nastu) minutach.</p>
<p><span id="more-495"></span></p>
<p>Solr Cloud to zmienił. W tym artykule zainstalujemy nowy cluster SolrCloud &#8222;od zera&#8221; i zobaczymy jak to działa w praktyce.</p>
<h2>Nasz przykładowy cluster</h2>
<p>W przykładach będziemy używać trzech serwerów Solr. Każdy serwer w clustrze jest zdolny obsługiwać jednocześnie indeksowanie oraz zapytania. To podstawowa różnica w stosunku do wcześniejszego rozwiązania z jednym serwerem master i wieloma serwerami slave. W nowej architekturze pojawia się dodatkowy element: Zookeeper, odpowiedzialny za przechowywanie konfiguracji clustra i synchronizacje jego pracy. To jest bardzo ważna informacja oznaczająca, że gdy Zookeeper zawiedzie, cały cluster jest bezużyteczny. Z tego powodu niezbędne jest zapewnienie wysokiej dostępności tego elementu &#8211; dlatego w tym przykładzie używamy trzech niezależnych instancji Zookeepera.</p>
<h2>Instalacja Zookeepera</h2>
<p>Jak napisaliśmy wcześniej, Zookeeper jest istotną częścią rozwiązania SolrCloud. Mimo, że możemy używać Zookeepera wbudowanego w Solr, jest to przydatne w zasadzie tylko w testowaniu. Do rozwiązań produkcyjnych zdecydowanie potrzebujesz, by Zookeeper był zainstalowany niezależnie od Solr i działał w innym procesie JVM by wyeliminować możliwość wzajemnego wpływu na swoją pracę lub przerwę w działaniu.</p>
<p>Instalacja Apache Zookeeper jest całkiem prosta i może być opisana następującymi krokami:</p>
<ol>
<li>Pobranie archiwum Zookeeper z: <a href="http://www.apache.org/dyn/closer.cgi/zookeeper/" target="_blank" rel="noopener noreferrer">http://www.apache.org/dyn/closer.cgi/zookeeper/</a></li>
<li>Rozpakowanie pobranej paczki i skopiowanie&nbsp;<em>conf/zoo_sample.cfg</em>&nbsp;do&nbsp;<em>conf/zoo.cfg</em></li>
<li>Modyfikacja&nbsp;<em>zoo.cfg</em>:
<ol>
<li>Zmiana&nbsp;<em>dataDir</em>&nbsp;na katalog, gdzie chcesz przechowywać dane konfigracyjne generowane przez cluster</li>
<li>Dodanie informacji o wszystkich instancjach Zookeepera (patrz niżej)</li>
</ol>
</li>
</ol>
<p>Po wspomnianych zmianach mój&nbsp;<em>zoo.cfg</em>&nbsp;wygląda następująco:
</p>
<pre class="brush:bash">tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/zookeeper/data
clientPort=2181
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888</pre>
<p>Następnie:</p>
<ol>
<li>Skopiuj instalacje na wszystkie serwery, gdzie Zookeeper ma działać</li>
<li>Stwórz plik&nbsp;<i>/var/zookeeper/data/myid</i> z indentyfikatorem serwera. Identyfikator ten jest różny dla każdej instancji (np. dla maszyny &nbsp;<i>zk2</i>&nbsp; ten plik będzie zawierał liczbę: &nbsp;<em>2</em>&nbsp;)</li>
<li>Uruchom wszystkie instancje używając polecenia “bin/zkServer.sh start-foreground” i zweryfikuj poprawność instalacji</li>
<li>Dodaj “bin/zkServer.sh start” do skryptów startowych i upewnij się, że system operacyjny monitoruje dostępność instancji Zookeepera.</li>
</ol>
<h2>Instalacja Solr</h2>
<p>Instalacja Solr jest następująca:</p>
<ol>
<li>Pobierz archiwum Solr z: <a href="http://www.apache.org/dyn/closer.cgi/lucene/solr/4.1.0" target="_blank" rel="noopener noreferrer">http://www.apache.org/dyn/closer.cgi/lucene/solr/4.1.0</a></li>
<li>Rozpakuj pobrany plik</li>
<li>W tym artykule będziemy używać gotowej instalacji z katalogu&nbsp;<em>example</em> i wszystkie zmiany będziemy wykonywać na tej przykładowej instalacji</li>
<li>Skopiuj instalację Solr na wszystkie serwery będące częścią clustera</li>
<li>Zainstaluj do Zookeepera dane konfiguracyjne, które będą używane przez cluster. W tym celu uruchom pierwszą instancję Solr z:
<pre class="brush:bash">java -Dbootstrap_confdir=./solr/collection1/conf -Dcollection.configName=solr1 -DzkHost=zk1:2181 -DnumShards=2 -jar start.jar</pre>
</li>
</ol>
<p>Ta komenda powinna być wykonana tylko raz. Następne uruchomienia będą używać konfiguracji z Zookeepera i lokalna konfiguracja nie jest już potrzebna. Następnie:</p>
<ol>
<li>Uruchom wszystkie instancje Solr używając:
<pre class="brush:bash">java –DzkHost=zk1:2181 –jar start.jar</pre>
</li>
</ol>
<h2>Sprawdzenie poprawności instalacji</h2>
<p>W tym celu idź do panelu administracyjnego na dowolnej instancji Solr. W naszym przykładzie URL jest następujący: &nbsp;<i>http://solr1:8983/solr</i>. Gdy klikniesz na zakładce: <i>cloud</i> a następnie wybierzesz <i>graph</i>, powinieneś zobaczyć coś podobnego do poniższego obrazka:
</p>
<p style="text-align: center;"><a href="http://solr.pl/wp-content/uploads/2013/03/cloud.png"><img decoding="async" class="size-medium wp-image-2909 aligncenter" alt="cloud" src="http://solr.pl/wp-content/uploads/2013/03/cloud-300x138.png" width="300" height="138"></a></p>
<h2>Kolekcja</h2>
<p>Nasz pierwsza kolekcja &#8211;&nbsp;<em>collection1</em>&nbsp;jest podzielona na dwa shardy &nbsp;(<em>shard1</em> i <em>shard2</em>). Każdny z nich jest umiejscowiony na dwóch instancjach Solr (OK, na obrazku widzisz, że każdy Solr jest na tej samej maszynie fizycznej &nbsp;– Mam aktualnie tylko jeden fizyczny serwer do testów &#8211; może jakiś ochotnik do darowizny? &nbsp;;)). Możesz też zobaczyć patrząc na grafikę kropki czy to jest primary shard czy replika.</p>
<h2>Podsumowanie</h2>
<p>Mam nadzieję, że to pierwszy z serii wpisów na temat solrCloud. Wiem, że jest bardzo krótki i pomija pewne detale i informację o shardach, replikach i architekturze rozwiązania. Potraktuj to jako checklistę do prostej (ale rzeczywistej) konfiguracji swojego rozwiązania &#8222;chmurowego&#8221;.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2013/03/11/solrcloud-howto/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Apache Lucene i Solr 4.0 beta</title>
		<link>https://solr.pl/2012/08/14/apache-lucene-i-solr-4-0-beta/</link>
					<comments>https://solr.pl/2012/08/14/apache-lucene-i-solr-4-0-beta/#respond</comments>
		
		<dc:creator><![CDATA[Marek Rogoziński]]></dc:creator>
		<pubDate>Tue, 14 Aug 2012 21:37:55 +0000</pubDate>
				<category><![CDATA[Lucene]]></category>
		<category><![CDATA[Solr]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[release]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=433</guid>

					<description><![CDATA[Wielkimi krokami nadchodzi moment wydania wersji 4.0 gdyż właśnie opublikowana została beta biblioteki Lucene oraz serwera wyszukiwania Solr. Pełna lista zmian w bibliotece Apache Lucene&#160;4.0 beta&#160;znajduje się pod adresem:&#160;http://wiki.apache.org/lucene-java/ReleaseNote40beta. Pełną listę zmian w Apache Solr&#160;4.0 beta&#160;znajdziemy pod adresem:http://wiki.apache.org/solr/ReleaseNote40beta. Bibliotekę Apache]]></description>
										<content:encoded><![CDATA[<p>Wielkimi krokami nadchodzi moment wydania wersji 4.0 gdyż właśnie opublikowana została <strong>beta</strong> biblioteki Lucene oraz serwera wyszukiwania Solr.</p>
<p><span id="more-433"></span></p>
<p>Pełna lista zmian w bibliotece Apache Lucene&nbsp;<strong>4.0 beta</strong>&nbsp;znajduje się pod adresem:&nbsp;<a href="http://wiki.apache.org/lucene-java/ReleaseNote40beta#referrer=solr.pl" target="_blank" rel="noopener noreferrer">http://wiki.apache.org/lucene-java/ReleaseNote40beta</a>. Pełną listę zmian w Apache Solr&nbsp;<strong>4.0 beta</strong>&nbsp;znajdziemy pod adresem:<a href="http://wiki.apache.org/solr/ReleaseNote40beta#referrer=solr.pl" target="_blank" rel="noopener noreferrer">http://wiki.apache.org/solr/ReleaseNote40beta</a>.</p>
<p>Bibliotekę Apache Lucene w wersji&nbsp;<strong>4.0 beta</strong>&nbsp;możemy znaleźć pod adresem:<a href="http://www.apache.org/dyn/closer.cgi/lucene/java/#referrer=solr.pl" target="_blank" rel="noopener noreferrer">http://www.apache.org/dyn/closer.cgi/lucene/java/</a>. Silnik wyszukiwania Apache Solr w wersji&nbsp;<strong>4.0 beta</strong>&nbsp;można znaleźć pod adresem&nbsp;<a href="http://www.apache.org/dyn/closer.cgi/lucene/solr/#referrer=solr.pl" target="_blank" rel="noopener noreferrer">http://www.apache.org/dyn/closer.cgi/lucene/solr/</a>.</p>
<p>W chwili publikowania tego wpisu wszystkie mirrory mogą nie być jeszcze uaktualnione.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2012/08/14/apache-lucene-i-solr-4-0-beta/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Autcomplete, cz. 4 (Ngram i faceting)</title>
		<link>https://solr.pl/2012/05/28/autcomplete-cz-4-ngram-i-faceting/</link>
					<comments>https://solr.pl/2012/05/28/autcomplete-cz-4-ngram-i-faceting/#respond</comments>
		
		<dc:creator><![CDATA[Marek Rogoziński]]></dc:creator>
		<pubDate>Mon, 28 May 2012 21:31:05 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[autocomplete]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=418</guid>

					<description><![CDATA[W poprzednich częściach przedstawiliśmy dwie metody tworzenia podpowiadania zapytań. Następnie jedną z nich rozbudowaliśmy o możliwość dodatkowego definiowania zwracanych informacji. W tym artykule wrócimy ponownie wykorzystamy faceting oraz ngram. Wymagania Przy tworzeniu listy podpowiedzi przyjęliśmy następujące założenia: Podpowiadana jest cała]]></description>
										<content:encoded><![CDATA[<p>W poprzednich częściach przedstawiliśmy dwie metody tworzenia podpowiadania zapytań. Następnie jedną z nich rozbudowaliśmy o możliwość dodatkowego definiowania zwracanych informacji. W tym artykule wrócimy ponownie wykorzystamy faceting oraz ngram.
</p>
<h2 align="LEFT">Wymagania</h2>
<p align="LEFT">Przy tworzeniu listy podpowiedzi przyjęliśmy następujące założenia:</p>
<p><span id="more-418"></span></p>
<ol>
<li>Podpowiadana jest cała fraza a nie tylko pojedyncze słowo</li>
<li>Podpowiadana fraza może wystąpić w indeksie wielokrotnie</li>
<li>w wyniku chcemy znać liczbę wystąpień</li>
<li>Częściej występujące frazy są podpowiadane w pierwszej kolejności</li>
<li>Kolejność podawanych przez użytkownika słów nie musi odpowiadać kolejności występowania słów w podpowiadanej frazie</li>
</ol>
<h2>Rozwiązanie</h2>
<p style="text-align: justify;" align="LEFT">Podany w pierwszej części sposób odpada ze względu na pierwsze założenie. Co prawda wyszukiwanie słów we frazie da się prosto osiągnąć zmieniając sposób analizy, jednak zwracane są pojedyncze słowa a nie cała fraza.</p>
<p style="text-align: justify;" align="LEFT">Rozwiązanie to zmodyfikowana wersja sposobu z facetingiem. Zamiast stosować wyszukiwanie wszystkich elementów i zawężanie wyników facetingu poprzez facet.prefix, możemy od razu wyszukać tylko te elementy, które mają fragment słowa wpisanego przez użytkownika. Ponieważ nie chcemy stosować zapytania prefiksowego ( „słowo*” ) ze względów wydajnościowych, na pomoc wezwiemy ngramy. Oznacza to zapisanie w indeksie wszystkich przedrostków słowa. Oczywistą wadą jest rozrost indeksu, ale w naszym przypadku jesteśmy w stanie z tym żyć <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>
<h2 style="text-align: justify;" align="LEFT">Schema.xml</h2>
<p style="text-align: justify;" align="LEFT">Definiujemy więc dodatkowy typ:</p>
<pre class="brush:xml">  &lt;fieldType name="text_autocomplete" class="solr.TextField" positionIncrementGap="100"&gt;
    &lt;analyzer type="index"&gt;
      &lt;tokenizer class="solr.WhitespaceTokenizerFactory"/&gt;
      &lt;filter class="solr.LowerCaseFilterFactory"/&gt;
      &lt;filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" /&gt;
    &lt;/analyzer&gt;
    &lt;analyzer type="query"&gt;
      &lt;tokenizer class="solr.WhitespaceTokenizerFactory"/&gt;
      &lt;filter class="solr.LowerCaseFilterFactory"/&gt;
    &lt;/analyzer&gt;
  &lt;/fieldType&gt;</pre>
<p align="LEFT">Oraz pola: to, którego wartość będziemy wyświetlać oraz te, służące do wyszukiwania:</p>
<pre class="brush:xml">&lt;field name="tag_autocomplete" type="text_autocomplete" indexed="true" stored="true" omitNorms="true" omitTermFreqAndPositions="true"/&gt;
&lt;field name="tag" type="string" indexed="true" stored="true" /&gt;</pre>
<p align="LEFT">Zostaje jeszcze odpowiedni copyField:</p>
<pre class="brush:xml">&lt;copyField source="tag" dest="tag_autocomplete"/&gt;</pre>
<h2>&nbsp;Zapytanie</h2>
<p align="LEFT">Po przeindeksowaniu możemy przystąpić do tworzenia zapytania:</p>
<ol>
<li>Zawężamy listę wyników do tych, które w polu tag_autocomplete mają poszukiwany fragment słowa: q=tag_autocomplete:(FRAZA)</li>
<li>W przypadku wielu podanych przez użytkownika fragmentów słów istotne jest, by były one wyszukiwane wszystkie: q.op=AND</li>
<li>Tak naprawdę wyniki nie są istotne, dane odczytamy z facetingu, więc informujemy solr, że nie potrzebujemy listy wyników: rows=0</li>
<li>Potrzebujemy natomiast faceting: facet=true</li>
<li>W dodatku to faceting po polu w którym przechowujemy oryginalną zawartość pola podpowiedzi: facet.field=tag</li>
<li>Nie interesują nas tagi, które nie zostały znalezione: facet.mincount=1</li>
<li>Interesuje nas 5 wyników: facet.limit=5</li>
</ol>
<p align="LEFT">Ostateczne zapytanie:</p>
<pre>?q=tag_autocomplete:(FRAZA)&amp;q.op=AND&amp;rows=0&amp;facet=true&amp;facet.field=tag&amp;facet.mincount=1&amp;facet.limit=5</pre>
<p align="LEFT">Jeśli parametry, które są stałe umieścimy w handlerze, jako wartości domyślne, to zapytanie sprowadza się do:</p>
<pre>?q=tag_autocomplete:(FRAZA)</pre>
<h2>Słowo na koniec</h2>
<p align="LEFT">Podstawową zaletą tego rozwiązania w stosunku do rozwiązania opartego o faceting i facet.prefix jest możliwość używania innego pola do zwracania podpowiedzi. Dzięki temu przy podpowiadaniu pojedynczych słów możemy w wyniku wyświetlić całą zawartość pola „tag”.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2012/05/28/autcomplete-cz-4-ngram-i-faceting/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Explain: nowa wersja</title>
		<link>https://solr.pl/2012/04/16/explain-nowa-wersja/</link>
					<comments>https://solr.pl/2012/04/16/explain-nowa-wersja/#respond</comments>
		
		<dc:creator><![CDATA[Marek Rogoziński]]></dc:creator>
		<pubDate>Mon, 16 Apr 2012 21:28:48 +0000</pubDate>
				<category><![CDATA[Ogólna]]></category>
		<category><![CDATA[explain]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=412</guid>

					<description><![CDATA[Pod adresem: &#160;explain.solr.pl&#160;znajdziecie nową wersję naszego oprogramowania do analizy zapytań zadawanych do solr. Nowa wersja obejmuje: poprawki błędów wstępne wsparcie dla Solr 4.0 obsługę ruby 1.9 Cały kod jest dostępny na naszym koncie GitHub.]]></description>
										<content:encoded><![CDATA[<p>Pod adresem: &nbsp;<a title="Solr Explain " href="http://explain.solr.pl/">explain.solr.pl</a>&nbsp;znajdziecie nową wersję naszego oprogramowania do analizy zapytań zadawanych do solr. Nowa wersja obejmuje:</p>
<ul>
<li>poprawki błędów</li>
<li>wstępne wsparcie dla Solr 4.0</li>
<li>obsługę ruby 1.9</li>
</ul>
<p>Cały kod jest dostępny na naszym <a href="https://github.com/solrpl/explain">koncie GitHub</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2012/04/16/explain-nowa-wersja/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>explain.solr.pl jako Open Source!</title>
		<link>https://solr.pl/2012/02/27/explain-solr-pl-jako-open-source/</link>
					<comments>https://solr.pl/2012/02/27/explain-solr-pl-jako-open-source/#respond</comments>
		
		<dc:creator><![CDATA[Marek Rogoziński]]></dc:creator>
		<pubDate>Mon, 27 Feb 2012 22:24:54 +0000</pubDate>
				<category><![CDATA[Ogólna]]></category>
		<category><![CDATA[explain]]></category>
		<category><![CDATA[explain.solr.pl]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=402</guid>

					<description><![CDATA[Niniejszym, zgodnie z wcześniejszą obietnicą kod źródłowy explain.solr.pl został opublikowany. Dla przypomnienia: jest to narzędzie do wizualizacji wyników zapytań zadawanych do Solr i odpowiedzi w przejrzystej formie na pytania: dlaczego dany dokument został znaleziony dlaczego dany dokument nie został znaleziony]]></description>
										<content:encoded><![CDATA[<p>Niniejszym, zgodnie z wcześniejszą obietnicą kod źródłowy <a title="Explain.solr.pl" href="http://explain.solr.pl/">explain.solr.pl</a> został opublikowany.</p>
<p><span id="more-402"></span></p>
<p>Dla przypomnienia: jest to narzędzie do wizualizacji wyników zapytań zadawanych do Solr i odpowiedzi w przejrzystej formie na pytania:</p>
<ul>
<li>dlaczego dany dokument został znaleziony</li>
<li>dlaczego dany dokument nie został znaleziony</li>
</ul>
<div>Dokładniejsze informację znajdują się <a title="Pomoc do explain.solr.pl" href="http://explain.solr.pl/help">tutaj</a>.</div>
<p>Zdecydowaliśmy się w tym momencie opublikować, mimo, że jeszcze wiele rzeczy chcielibyśmy zmienić i poprawić. Jednak z drugiej strony zawsze będzie coś do poprawienia <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>
<p>Sama aplikacja została napisana z wykorzystaniem Ruby On Rails i chociaż widać, że była pisana przez osoby na codzień korzystające z innych języków programowania, to mamy nadzieje, że okaże się&nbsp;przydatna.</p>
<p>Kod jest udostępniony na zasadach licencje Apache (2.0), w przypadku jego wykorzystania będzie nam&nbsp;miło, jeśli dostaniemy o tym informację. Namawiamy również do podsyłania poprawek i zgłaszania błędów.</p>
<p>Kod jest dostępny na Githubie: <a title="Github" href="https://github.com/solrpl/explain">https://github.com/solrpl/explain</a></p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2012/02/27/explain-solr-pl-jako-open-source/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Explain 0.9.1 &#8211; Nowa wersja</title>
		<link>https://solr.pl/2012/01/11/explain-0-9-1-nowa-wersja/</link>
					<comments>https://solr.pl/2012/01/11/explain-0-9-1-nowa-wersja/#respond</comments>
		
		<dc:creator><![CDATA[Marek Rogoziński]]></dc:creator>
		<pubDate>Wed, 11 Jan 2012 20:43:12 +0000</pubDate>
				<category><![CDATA[Konferencje]]></category>
		<category><![CDATA[explain]]></category>
		<category><![CDATA[explain.solr.pl]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=353</guid>

					<description><![CDATA[Po paru tygodniach (wliczając święta, gdzie teoretycznie raczej ludzie się zajmują innymi rzeczami niż analizowanie zapytań do solr ;)) chcielibyśmy podzielić się wnioskami z udostępnienia explain.solr.pl. Zaobserwowaliśmy, że: narzędzie wzbudziło pewne zainteresowanie, jednak większość analizowanych przez Was odpowiedzi solr jest]]></description>
										<content:encoded><![CDATA[<p>Po paru tygodniach (wliczając święta, gdzie teoretycznie raczej ludzie się zajmują innymi rzeczami niż analizowanie zapytań do solr ;)) chcielibyśmy podzielić się wnioskami z udostępnienia <a title="Explain.solr.pl" href="http://explain.solr.pl/">explain.solr.pl</a>. Zaobserwowaliśmy, że:</p>
<p><span id="more-353"></span></p>
<ul>
<li>narzędzie wzbudziło pewne zainteresowanie, jednak większość analizowanych przez Was odpowiedzi solr jest zaznaczana jako niepubliczna.</li>
<li>w stosunkowo dużej części zapytań zamiast odpowiedzi z SOLR wklejacie samo zapytanie</li>
<li>również często wklejany wynik nie zawiera informacji diagnostycznych (debugQuery=true)</li>
<li>nie wydana wersja <a href="http://solr.pl/tag/4-0/">4.0</a> cieszy się dość dużą popularnością, niestety explain jeszcze jej nie wspiera</li>
<li>z wyjątkiem oczywistych problemów z analizą odpowiedzi SOLR 4.0 parser radził sobie niespodziewanie dobrze</li>
</ul>
<div>Nasze wnioski:</div>
<div>
<ul>
<li>popracować nad przejrzystością (m.in. komunikatów <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;" /> )</li>
<li>skupić się nad wsparciem wersji <a href="http://solr.pl/tag/4-0/">4.0</a></li>
</ul>
</div>
<p>W chwili obecnej na <a title="Explain.solr.pl" href="http://explain.solr.pl/">explain.solr.pl</a>&nbsp;znajduje się nowa wersja oprogramowania.&nbsp;Zmiany:</p>
<ul>
<li>dodano proste wsparcie dla analizy pod kątem wydajności</li>
<li>poprawiono komunikaty na trochę bardziej przyjazne dla użytkownika</li>
<li>poprawiono parser wyników w oparciu o pliki testowe odpowiedzi wygenerowanymi przez testy jednostkowe dostępne w kodzie Solr dla wersji 3.5</li>
<li>drobne poprawki interfejsu</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2012/01/11/explain-0-9-1-nowa-wersja/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>explain.solr.pl: Status</title>
		<link>https://solr.pl/2011/11/11/explain-solr-pl-status/</link>
					<comments>https://solr.pl/2011/11/11/explain-solr-pl-status/#respond</comments>
		
		<dc:creator><![CDATA[Marek Rogoziński]]></dc:creator>
		<pubDate>Fri, 11 Nov 2011 20:30:30 +0000</pubDate>
				<category><![CDATA[Konferencje]]></category>
		<category><![CDATA[eurocon]]></category>
		<category><![CDATA[explain]]></category>
		<category><![CDATA[explain.solr.pl]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[lucene eurcon]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=329</guid>

					<description><![CDATA[Podczas konferencji Lucene Eurocon 2011 prezentowaliśmy narzędzie do analizy wyników Solr. Obiecywaliśmy, że publiczna wersja serwisu zostanie wkrótce udostępniona społeczności. Chcieliśmy zapewnić, że cały czas zbliżamy się do tego momentu. W tym momencie skupiamy się jeszcze nad: przebudową analizatora informacji]]></description>
										<content:encoded><![CDATA[<p>Podczas konferencji <a href="http://solr.pl/2011/11/07/lucene-eurcon-2011-dzien-pierwszy/" target="_blank" rel="noopener noreferrer">Lucene Eurocon 2011</a> prezentowaliśmy narzędzie do analizy wyników Solr. Obiecywaliśmy, że publiczna wersja serwisu zostanie wkrótce udostępniona społeczności. Chcieliśmy zapewnić, że cały czas zbliżamy się do tego momentu. W tym momencie skupiamy się jeszcze nad:</p>
<p><span id="more-329"></span></p>
<ul>
<li>przebudową analizatora informacji zwracanych przez explain Lucene, tak by przygotować się na wielkie zmiany w Lucene 4.0 (m.in <em>per field similarity</em> oraz <em>flexible similarity</em>)</li>
<li>przebudową interfejsu i zwiększeniem czytelności</li>
<li>porządkami w kodzie i przygotowaniem do publikacji źródeł</li>
</ul>
<div>Na szczęście jesiennie i zimowe, długie wieczory sprzyjają pracy <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;" /> Postaramy się udostępnić <a href="http://explain.solr.pl" target="_blank" rel="noopener noreferrer">http://explain.solr.pl</a> jak najszybciej będzie to możliwe.</div>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2011/11/11/explain-solr-pl-status/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Wróciliśmy</title>
		<link>https://solr.pl/2011/10/31/wrocilismy/</link>
					<comments>https://solr.pl/2011/10/31/wrocilismy/#respond</comments>
		
		<dc:creator><![CDATA[Marek Rogoziński]]></dc:creator>
		<pubDate>Mon, 31 Oct 2011 20:28:59 +0000</pubDate>
				<category><![CDATA[Konferencje]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=325</guid>

					<description><![CDATA[Kolejny Lucene Eurocon za nami. Bardzo intensywne dwa dni, gdzie podstawowym problemem było: na który z trzech wykładów pójść. Czasem wybór był bardzo trudny, jedyna nadzieja w tym, że w tym roku wszystkie prezentacje były nagrywane i wkrótce zostaną udostępnione]]></description>
										<content:encoded><![CDATA[<p>Kolejny Lucene Eurocon za nami. Bardzo intensywne dwa dni, gdzie podstawowym problemem było: na który z trzech wykładów pójść. Czasem wybór był bardzo trudny, jedyna nadzieja w tym, że w tym roku wszystkie prezentacje były nagrywane i wkrótce zostaną udostępnione w sieci.</p>
<p><span id="more-325"></span></p>
<p>Dla nas najważniejszy był drugi dzień i efekty naszej pracy: <strong>Understanding &amp; Visualising Solr 'explain&#8217; Information</strong>. Prezentacja składała się z dwóch części. Pierwsza, teoretyczna, opisywała to, co prezentuje solr odnośnie ważności zwróconego dokumentu. Informacje te nie należą niestety do najbardziej czytelnych, szczególnie w sytuacji, gdy wyszukiwanie odbywa się po wielu polach korzystając często z dedykowanych parserów zapytań (na obrazku fragment opisujący trafienie tylko w jeden dokument (!)).</p>
<p><img decoding="async" class="alignleft size-medium wp-image-1741" title="explain" src="http://solr.pl/wp-content/uploads/2011/10/explain-300x118.png" alt="Przykładowy explain" width="300" height="118"></p>
<p>Sytuację pogarsza fakt, że pytania Klienta dotyczące prób zrozumienia kolejności dokumentów w wynikach wyszukiwania, są tym, co zajmuje sporo czasu w projekcie.</p>
<p>Druga część prezentacji pokazywała to, co postanowiliśmy z tym problemem zrobić. Pomysł pojawił się po obejrzeniu <a href="http://explain.depesz.com">explain.depesz.com</a> &#8211; podobnego narzędzia służącego wizualizacji informacji udostępnianych przez bazę postgreSQL.</p>
<p>Z perspektywy czasu nasz <em>explain</em> wydaje się być dobrym pomysłem. Samo narzędzie przydało nam się już wielokrotnie. Co ważniejsze &#8211; prezentacja na Euroconie pokazała, że jest również spore zainteresowanie społeczności. Dziękujemy za miłe słowa, zagrzewanie do walki a zwłaszcza za obietnice podesłania własnych modułów.</p>
<p>Obecna wersja <a href="http://explain.solr.pl">explain.solr.pl</a> skupia się na odczycie informacji generowanych przez solr 3.x. Pracujemy obecnie nad jej upublicznieniem oraz (trochę później) otwarciem kodu.</p>
<p>Podsumowując plany na najbliższy czas są dość ambitne:)</p>
<ol>
<li>Po pierwsze &#8211; z kronikarskiego obowiązku &#8211; postaramy się opisać jak wyglądał Lucene Eurocon 2011 z naszej perspektywy. Planujemy opublikować dwa wpisy z których każdy będzie poświęcony jednemu dniu konferencji. Czyli coś do poczytania zanim pojawią się oficjalne filmy z konferencji.</li>
<li>Otworzenie&nbsp;<a href="http://explain.solr.pl" target="_blank" rel="noopener noreferrer">explain.solr.pl</a>&nbsp;dla szerokiego grona odbiorców <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;" /></li>
<li>Opublikowanie kodu&nbsp;<a href="http://explain.solr.pl" target="_blank" rel="noopener noreferrer">explain.solr.pl</a>&nbsp; (github)</li>
<li>Powrót do bardziej regularnych wpisów dotyczących Solr.</li>
</ol>
<div>Trzymajcie kciuki <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;" /></div>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2011/10/31/wrocilismy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Solr filtry: PatternReplaceCharFilter</title>
		<link>https://solr.pl/2011/05/09/solr-filtry-patternreplacecharfilter/</link>
					<comments>https://solr.pl/2011/05/09/solr-filtry-patternreplacecharfilter/#respond</comments>
		
		<dc:creator><![CDATA[Marek Rogoziński]]></dc:creator>
		<pubDate>Mon, 09 May 2011 17:45:06 +0000</pubDate>
				<category><![CDATA[Solr]]></category>
		<category><![CDATA[filtr]]></category>
		<category><![CDATA[filtrowanie]]></category>
		<category><![CDATA[schema]]></category>
		<category><![CDATA[schema.xml]]></category>
		<category><![CDATA[solr]]></category>
		<category><![CDATA[tokenizer]]></category>
		<guid isPermaLink="false">http://sematext.solr.pl/?p=240</guid>

					<description><![CDATA[Kontynuując przeglad filtrów dostępnych w Solr dziś przyglądamy się pracy PatternReplaceCharFilter. Jak łatwo się domyślić zadaniem filtra jest zamiana w strumieniu wejściowym tych fragmentów, które pasują do danego wyrażenia regularnego. Dostępne są następujące parametry: pattern (wymagany) – wartość, która zostanie]]></description>
										<content:encoded><![CDATA[<p>Kontynuując przeglad filtrów dostępnych w Solr dziś przyglądamy się pracy PatternReplaceCharFilter.</p>
<p>Jak łatwo się domyślić zadaniem filtra jest zamiana w strumieniu wejściowym tych fragmentów, które pasują do danego wyrażenia regularnego.</p>
<p><span id="more-240"></span></p>
<p>Dostępne są następujące parametry:</p>
<ul>
<li><em>pattern</em> (wymagany) – wartość, która zostanie zamieniona 	(wyrażenie regularne)</li>
<li><em>replacement</em> (domyślnie: &#8222;&#8221;) &#8211; wartość, którą 	zostanie zastąpiony dopasowany do wyrażenia regularnego fragment</li>
<li><em>blockDelimiters</em></li>
<li><em>maxBlockChars</em> (domyślnie: 10000, większe od 0) – bufor używany przy porówaniu</li>
</ul>
<h2>Przykłady wykorzystania</h2>
<p>Wykorzystanie filtru sprowadza się do dodania jego definicji w definicji typu pola w schema.xml np.:
</p>
<pre class="brush:xml">&lt;fieldType name="textCharNorm" class="solr.TextField"&gt;
  &lt;analyzer&gt;
    &lt;charFilter class="solr.PatternReplaceCharFilterFactory" …/&gt;
    &lt;charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/&gt;
    &lt;tokenizer class="solr.WhitespaceTokenizerFactory"/&gt;
  &lt;/analyzer&gt;
&lt;/fieldType&gt;</pre>
<p>Poniżej przykładowe definicje dla różnych przypadków.</p>
<h3>Wycinanie fragmentów tekstu</h3>
<p>To najprostszy przypadek. Należy tylko podać w atrybucie pattern to co chcemy wyciąć i już. Przykład:
</p>
<pre class="brush:xml">&lt;charFilter class="solr.PatternReplaceCharFilterFactory" pattern="#TAG" /&gt;</pre>
<p>co spowoduje pomijanie w treści danych elementów: &#8222;#TAG&#8221;</p>
<h3>Zamiana fragmentów tekstu</h3>
<p>Przypadek podobny do tego wyżej, natomiast chcemy zamienić tekst na inny.
</p>
<pre class="brush:xml">&lt;charFilter class="solr.PatternReplaceCharFilterFactory" pattern="#TAG" replacement="[CENZORED]"/&gt;</pre>
<h3>Zamiana wzorców</h3>
<p>Powyższe przypadki były trywialne. To, co stanowi o sile tego filtru to obsługa wyrażeń regularnych. (Używasz wyrażeń regularnych, prawda?) Poniższy przykład jest prosty – ukrywa  wszystkie liczby (zamieniając je na gwiazdki). Radzi sobie również z liczbami oddzielonymi myślnikami, traktując je jako pojedyncze liczby.
</p>
<pre class="brush:xml">&lt;charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(\\d+-*\\d+)+" replacement="*"/&gt;</pre>
<h3>Manipulacja tekstem</h3>
<p>Tekst zastępujący nie musi być prostym tekstem. Obsługiwane są tzw. odwołania wsteczne, które pozwalają na odwołanie się do fragmentów dopasowanego wzorca. Po szczegóły odsyłam do dokumentacji wyrażeń regularnych. W poniższym przykładzie wszystkie zwielokrotnione znaki zastępowane są znakiem pojedynczym.
</p>
<pre class="brush:xml">&lt;charFilter class="solr.PatternReplaceCharFilterFactory" pattern="(.)\\1" replacement="$1"/&gt;</pre>
<h2>Parametry zaawansowane</h2>
<p>Do tej pory nie wspomniałem o parametrach: <em>blockDelimiters</em> i <em>maxBlockChars</em>. Jak wynika ze źródeł filtra, są one związane ze sposobem jego implementacji. <em>CharFilter</em> z założenia operuje na pojedynczych znakach, natomiast dopasowanie wzorca wymaga wczytania do wewnętrznego bufora większej liczby znaków. <em>MaxBlockChars</em> pozwala na okreśłenie rozmiaru tego bufora. W zasadzie nie musisz się tym martwić, jeśli wzorzec, który zdefiniowałeś, nie powoduje dopasowania większego kawałka tekstu (większy oznacza tu powyżej 10tys znaków). <em>BlockDelimiters</em> pozwala dodatkowo zoptymalizować wypełnianie tego bufora. Może być używany, jeśli informacja w analizowanym polu jest w jakiś sposób podzielona na sekcje (np. jest to CSV, zdania itp.). Jest to tekst, który informuje skaner, że zaczyna się nowa sekcja, w związku z tym, ew fragmenty dopasowania z poprzedniej sekcji już się nie przydadzą.</p>
<h2>Ograniczenia</h2>
<p>Ważnym ograniczeniem filtra jest to, że w bezpośredni sposób manipuluje napisem wejściowym, nie zachowując informacji związanych z początkowym tekstem. Oznacza to, że jeśli filtr usunie jakiś fragment napisu, lub doda nowy fragment, tokenizer tego nie zauważy i położenie tokenów w oryginalnym polu nie zostanie poprawnie zapisane. Trzeba mieć tego świadomość w sytuacji używania zapytań biorących pod uwagę wzajemne położenie słów oraz w przypadku używania highlightingu.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://solr.pl/2011/05/09/solr-filtry-patternreplacecharfilter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
