Solr filtry: KeepWordFilter

Tym razem postanowiłem się przyjrzeć nietypowym filtrom dostępnym w standardowej dystrybucji Solr. Jako pierwszy w moje ręce trafił filtr o nazwie KeepWordFilter.

Zaczynamy

Na początek kilka słów o tym, co ten filtr robi. Jak sama nazwa może wskazywać „zatrzymuje” on słowa. Dokładniej rzecz biorąc filtr działa odwrotnie do filtra o nazwie StopFilter. Odwrotnie – czyli jak ? Czy po prostu zatrzymuje tylko określone w definicji słowa ? O tym za chwilę – zacznijmy od definicji typu i pola w pliku schema.xml:

Jak widać na powyższej definicji typu filtr oprócz standardowej definicji klasy posiada również dwa dodatkowe atrybuty:

  • words – listę słów do zatrzymania
  • ignoreCase – wartość true | false włączająca lub wyłączająca ignorowanie wielkości znaków.

Zawartość pliku

Załóżmy, iż plik words.txt miałby następującą zawartość:

Jeżeli chcielibyśmy zaindeksować frazę „Ala ma kota, a kot ma Alę”, to w indeksie zostałyby zapisane następujące tokeny: „ala”, „ma”, „kota”, „ma”, ponieważ tylko te wyrazy zostały zdefiniowane w pliku words.txt. Widać to wyraźnie w panelu administracyjnym Solr:

Kilka słów na koniec

Pomimo tego, iż nigdy nie korzystałem z tego filtra wydaje mi się, że jest to dobry filtr do przechowywania w polu wartości z typów wyliczeniowych, czy w sytuacjach, gdzie interesuje nas skończona, a nawet lepiej – niewielka i znana z góry lista wartości, takich jak np. kategorie, gdzie nie możemy filtrować informacji na poziomie aplikacji lub gdy jest to bardzo utrudnione. Cóż, mam nadzieję, że opisana funkcjonalność kiedyś się przyda.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.