Niedawno Solr otrzymał kolejną mała, aczkolwiek wartą wspomnienia funkcjonalność – kolejny, dostępny w standardowej dystrybucji format odpowiedzi – 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ę:
<queryResponseWriter name="csv"/>
Po tym zostaje już tylko uruchomienie Solr i zaindeksowanie przykładowych danych. Na potrzeby tego wpisu wykorzystałem dane z pliku hd.xml znajdującego się wśród plików przykładowych.
Jako, że funkcjonalność jest naprawdę prosta stwierdziłem, iż wystarczy mi, jeżeli sprawdzę, czy działa 😉
Zadając zapytanie q=*:*&fl=id,name,popularity&wt=csv
dostajemy następujące dane:
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
To samo zapytanie (oczywiście, bez parametru wt=csv
) generuje nam następującego xml`a:
<?xml version="1.0" encoding="UTF-8"?> <response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">0</int> <lst name="params"> <str name="q">*:*</str> <str name="fl">id,name,popularity</str> </lst> </lst> <result name="response" numFound="2" start="0"> <doc> <str name="id">SP2514N</str> <str name="name">Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133</str> <int name="popularity">6</int> </doc> <doc> <str name="id">6H500F0</str> <str name="name">Maxtor DiamondMax 11 - hard drive - 500 GB - SATA-300</str> <int name="popularity">6</int> </doc> </result> </response>
Na koniec
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 ResponseWriter 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 CSVResponseWriter może się przydać.