O CouchDB Lucene provê a funcionalidade de realizar buscas full-text no CouchDB utilizando Lucene.
Antes de começar precisamos instalar as dependências, só lembrando que esse tutorial foi testado nas versões 10.04 e 9.10 do Ubuntu Linux, mas a princípio o procedimento de instalação para Mac deve ser parecido.
No Ubuntu 10.04 os pacotes sun-java6 foram removidos da seção Multiverse do Ubuntu archive, então você precisa adicionar o repositório Partner da Canonical.
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
Então você pode instalar o JDK e o JRE:
sudo apt-get install sun-java6-bin sun-java6-jre sun-java6-jdk
Para instalar o CouchDB Lucene é preciso que você tenha o Git e o Maven instalados:
sudo apt-get install git-core maven2
Finalmente para instalar o CouchDB Lucene é necessário clonar o repositório:
git clone git://github.com/rnewson/couchdb-lucene.git
No caso, hoje a versão estável é a 0.5.3, então vamos dar o build:
cd couchdb-lucene git checkout v0.5.3 mvn
Configurando o CouchDB
Agora vamos configurar o CouchDB editando o arquivo de configuração que geralmente está localizado em /usr/local/etc/couchdb/local.ini
[couchdb] os_process_timeout=60000 ; aumenta o timeout para 5 segundos [external] fti=/path/do/python /path/para/couchdb-lucene/tools/couchdb-external-hook.py ; geralmente /usr/bin/python [httpd_db_handlers] _fti = {couch_httpd_external, handle_external_req, <<"fti">>}
Agora vamos criar uma view de exemplo, supondo que temos um design document de Posts
{ "_id": "_design/Post", "fulltext": { "by_title": { "index": " function(doc) { if(doc['couchrest-type'] == 'Post') { var ret=new Document(); ret.add(doc.title); return ret; } }" } } }
Pronto, você pode realizar buscas full-text no CouchDB utilizando Lucene:
curl http://localhost:5984/nome_banco/_fti/_design/Post/by_title?q=titulo_do_post