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