Rails: acts_as_solr plugin
Solr è un server per le ricerche basto su la libreria lucene java con una interfaccia HTTP/XML. E’ buono quando c’è una grande collezione di documenti. acts_as_solr è un plugin Ruby on Rails che consente di utilizzarlo semplicemente nei modelli rails. Essenzialmente fornisce alcuni metodi come il find_by….
Installazione
E’ necessario installare il plugin con:
1 ./script/plugin install svn://svn.railsfreaks.com/projects/acts_as_solr/trunk
Una volta installato il plugin dovete lanciare il server solr con rake solr:start.
Di default il server parte in development e crea l’indice nella cartella vendor/plugins/acts_as_solr/solr/solr/data/index/.
Se volete cambiare queste impostazioni dovete modificare il file in vendor/plugins/acts_as_solr/solr/solr/conf/solrconfig.xml. Successivamente dovete modificare, se serve, il file solr.yml in RAILS_ROOT/config, specificando l’url del server solr in production e in development.
Utilizzo nei modelli
Supponendo di avere un modello User, si possono indicizzare i campi su cui cercare semplicimente specificandoli nel modello con acts_as_solr:
1 #Nel Modello 2 3 acts_as_solr :fields => [:firstname, :lastname, :description] 4 end 5 6 #Nel controllore 7 @results = Camera.find_by_solr("Skype")
Creare l’indice
Il metodo per fare il rebuild dell’indice è rebuild_solr_index. Per tabelle con molti record potrebbero presentarsi problemi in termini di prestazioni poichè ogni riga da indicizzare viene spedita a solr, per ovviare al problema piuttosto che salvare ogni singola riga, si possono salvare in batch definendo il parametro batch_size (ad esempio 200), così da aggiornare l’indice ogni 200 record.
Magari con un po’ più di tempo a disposizione riprendo l’argomento approfondendolo, visto che per adesso solr sembra un ottimo sostituto di acts_as_ferret.


Attenzione ragazzi che il link corretto è questo:
http://acts-as-solr.railsfreaks.com
Ottima risorsa comunque visto che in passato ho avuto diversi problemi con acts_as_ferret…mi metto subito all’opera per testare acts_as_solr.
Grazie!
Ciao Filippo,
grazie per la segnalazione del link…