MouseOver Studio

MouseOver Studio header image 2

Indexação de documentos em JRuby com ActiveLucene

janeiro 27th, 2010 por Diego Carrion · 5 comentários

ActiveLucene é uma interface para o Lucene similar com a interface do ActiveRecord e/ou ActiveModel.

Isso quer dizer que você pode gerar um scaffold numa aplicação Rails, ir no modelo, trocar ActiveRecord::Base por ActiveLucene::Document e tudo deveria continuar funcionando, com a diferença do modelo estar sendo salvo num índice do Lucene e não num banco de dados relacional.

Dado que os documentos são salvos num índice do Lucene, podemos procurar eles utilizando a sintaxe de query do Lucene, sem esquecer que por ter uma interface similar à do ActiveRecord, podemos também procurar eles por um id.

A classe base do ActiveLucene se chama Document porque ao igual que os documentos de outros sistemas, não tem uma estrutura definida e todos os atributos são dinâmicos, pelo que você não tem que se preocupar com eles.

o ActiveLucene foi extraído do Lunr, um servidor do qual vou falar num futuro post, mas hoje também pode ser utilizado em aplicações nas quais ter um banco de dados relacionais no faz muito sentido e especialmente nas quais se deseja procurar documentos por texto.

A restrição do ActiveLucene é que somente funciona com JRuby, dado que o Lucene é uma biblioteca em Java que roda sobre a JVM. Mesmo assim, caso isso não for um problema, utilizar o ActiveLucene deve ser bem mais simples e leve que utilizar uma solução como o Sphinx ou o Solr, onde dependendo do caso pode resultar numa grande vantagem.

O Lucene tem um monte de funcionalidades e o ActiveLucene não suporta todas elas, mas dependendo das necessidades das pessoas elas serão indo adicionadas ao projeto. Hoje existe um suporte a highlighting e um pouco a paginação, como pode ser visto no seguinte video, junto com uma demonstração básica de como funciona a ferramenta:

Full text search in JRuby with ActiveLucene from Diego Carrion on Vimeo.

Se você gostou do ActiveLucene, considera me recomendar no Working With Rails. Para ficar mais perto das novidades, não deixa de me seguir no Twitter.

Tags: Api · gem · java · jruby · jvm · plugin · Uncategorized

5 respostas ate agora ↓

  • 1 Ricardo Almeida // jan 27, 2010 at 1:04 am

    Muito bom Carrion!

  • 2 Diego Carrion // jan 27, 2010 at 10:01 am

    Obrigado Ricardo :)

  • 3 miguel baldi // jan 27, 2010 at 10:10 am

    Show Diego, muito bom. Estava pesquisando isso semana passada.

  • 4 Leandro Silva // jan 27, 2010 at 5:46 pm

    Meu herói!!! :)

  • 5 Diego Carrion // fev 1, 2010 at 2:02 pm

    Valeu Miguel e Leandro, tomara seja de utilidade para voces.

Deixar um comentário