Gaur Solr-i buruz arituko gara. Solr geroz eta gehiago elucene-solr-logorabiltzen den web aplikazio bat da, Lucene bilatzaile motore librearen gainean inplementatutakoa. Solr-ek Lucene indizeak erabiltzeko erraztasunak eta funtzionalitate gehigarriak eskaintzen ditu. Dokumentuak indexatu eta bilatzeko aukera ematez gain, hainbat gehigarri ditu, hala nola, highlightak, dokumentu erlazionatuak, zuzentzailea eta abar. Indexazio eta bilaketa hori url bitartez egin daiteke, edota hainbat lengoaietarako dauden liburutegiak erabiliz (java, python, ruby, php, c#/.net, c++, scala, perl, javascript /json /node.js, R …).

Elhuyarren Lucene eta Solr erabiltzen dugu hainbat aplikazioetan, adibidez webcorpusak.elhuyar.org atarian corpusak indexatzeko, edo Dokusare eta Elezkari moduko aplikazioetan dokumentu bildumak indexatu eta kontsultatzeko. Bada, gaur, horrelako aplikazioetan Solr-en segurtasuna nola ahalbidetu azalduko dugu, kudeaketarako sarbidea edozeinen esku egon ez dadin. Kudeaketarako sarbidea mugatzea garrantzitsua da, bestela edozeinek baitu aukera indizeetan aldaketak egiteko (eta indizea bera osorik ezabatzeko ere!).

Jaisteko dagoen paketeak defektuz Jetty zerbitzari bat ekartzen du Solr exekutatzeko, eta aukera ematen du ere produkziorako zerbitzari propio batean instalatzeko (Tomcat, adibidez). Ez demo moduan ez eta produkziorako ere, Solr-ek ez du inolako kudeaketa sarbide segururik eskaintzen. Kudeaketa sarbidea mugatzeko, zerbitzariak konfiguratu behar dira. Ondorengo lerroetan deskribatzen da nola egin hori.

Suposatu dezagun, ajax bitartez kontsultak egin nahi dizkiogula Solr-i. Bilaketak egiteko url-ek halako patroiak izango dute:

/collection1/select //bilaketak egiteko
/collection1/suggest //bilaketa iradokizunak
/collection1/mlt //dokumentu erlazionatuak bilatzeko

Horiek publiko utzi nahiko genituzke, kontsultak egiteko, baina bestelako url patroien sarbidea mugatu nahi dugu, administratzaileak bakarrik atzitu ahal izan ditzan.

Bi kasu hartuko dugu kontuan. Alde batetik Solr-ek duen Jetty zerbitzaria, eta beste batetik produkziorako erabiltzen den Tomcat zerbitzari baten konfigurazioa. Proba hauek Solr 4.10.4 bertsioarekin egin dira.

Jetty

‘solr-4.10.4/example/etc’ direktorio barruan aldaketa hauek egingo ditugu.

  • ‘jetty.xml’ fitxategiaren bukaeran hau gehitu:
<Call name="addBean">
  <Arg>
    <New>
      <Set name="name">admin</Set>
     <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
      <Set name="refreshInterval">0</Set>
    </New>
  </Arg>
</Call>
  • ‘webdefault.xml’ fitxategiaren bukaeran hau gehitu:
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Solr Admin</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Public</web-resource-name>
        <url-pattern>/collection1/select</url-pattern>
        <url-pattern>/collection1/suggest</url-pattern>
        <url-pattern>/collection1/mlt</url-pattern>
    </web-resource-collection>
</security-constraint>

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>admin</realm-name>
</login-config>

 

  • ‘real.properties’ fitxategia sortu eta testu hau gorde:

admin: pasahitza, admin

Horrekin Jetty konfiguratuta genuke.

Tomcat

‘/etc/tomcat6′ direktorio barruan aldaketa hauek egingo ditugu.

  • ‘web.xml’ fitxategiaren bukaeran hau gehitu:
<security-constraint>
    <web-resource-collection>
        <web-resource-name>Solr Admin</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Public</web-resource-name>
        <url-pattern>/collection1/select</url-pattern>
        <url-pattern>/collection1/suggest</url-pattern>
        <url-pattern>/collection1/mlt</url-pattern>
    </web-resource-collection>
</security-constraint>

 

<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>admin</realm-name>
</login-config>
  • ‘tomcat-users.xml’ fitxategiaren bukaeran hau gehitu:
<role rolename="admin"/>
<user username="admin" password="pasahitza" roles="admin"/>

 

Horrekin Tomcat konfiguratuta genuke. Honaino gure gaurko artikulua.

Egilea: Gotzon Santander