Lucene é um framework de alto desempenho para busca textual feito em Java. Uma das características marcantes dele é a integração com Hadoop, um framework para computação distribuida, que possui, dentre outros, um MapReduce e um sistema de arquivos distribuido HDFS.
Imagine o seguinte cenário: Seu usuário deseja criar um modulo de gerenciamento de artigos e também expó-los na Internet. As informações do artigo são: título, autor e o contéudo. Normalmente cada artigo desses contém cerca de 1500 palavras e o usuário poderá buscar pelo conteudo desses artigos. Suponha que há 1 milhão e meio de artigos para serem cadastrados, o simples uso de um banco de dados e o operador LIKE '%palavra%' é inviável. E aí que entra um bom framework de busca textual, usá-lo passa ser a solução mais tranquila e viável. Além de trazer velocidade, também traz outras características nas buscas que dificilmente fariamos codificando tudo do zero.
Há vários termos usados na terminologia do framework, os principais são: Documento, Campo, Directório, Indexador, Pesquisador, Analisador e Termo.
Documento - é o conjunto de dados que você deseja indexar, por ex. título, conteudo e autor formam o documento artigo, pode ser visto como um objecto no lucene é visto como Document.
Campo - é o dado, identificado, que pode ser analogo a um campo de uma tabela ou uma propriedade de um objecto no lucene é visto como Field.
Directório - conceito abstrato que denota um local para guardar os índices no lucene é visto como uma interface Directory, que possui diversas implementações DbDirectory, FSDirectory, JEDirectory, RAMDirectory.
Indexador - é o responsável por indexar os documentos num directorio no lucene é visto, geralmente, como IndexWriter.c
Pesquisador - responsável por pesquisar uma Query no diretorio de índices, no lucene é visto como Searcher.
Analisador - actua como um filtro e faz uma pré-avaliação do que pode ser indexado ou não, no lucene há uma lista de vários analisadores.
Termo - pode ser visto como objecto que pode ser usado como parametro da pesquisa, composto pelo nome do campo e o valor a ser pesquisado, no lucene é visto como Term.
Quando se faz uma pesquisa por documentos no Lucene podemos utilizar de alguns operadores (+, -, AND, NOT, OR, * e etc.) juntamente com o termo pesquisado ou apenas pesquisar uma frase completa.
Exemplo : termo
Consequência: Irá pesquisar a palavra "termo" nos documentos indexados.
Exemplo : termo OR palavra ( == termo palavra)
Consequência: Irá pesquisar "termo" ou "palavra" nos documentos indexados.
Exemplo : +termo +palavra ( == termo AND palavra)
Consequência: Irá pesquisar "termo" e "palavra" nos documentos indexados.
Exemplo : campo:termo
Consequência: Irá pesquisar "termo" no campo "campo" nos documentos indexados.
Exemplo : +manutd +java -manager
Consequência: Irá pesquisar documentos que contenham manutd e java e não tenha manager.
Exemplo : "termo exacto"
Consequência: Irá pesquisar documentos que contenham exactamente "termo exacto".
Exemplo : java*
Consequência: Irá pesquisar documentos que contenham palavras que começem com java (javadb, javanet...).
Exemplo : java~
Consequência: Irá pesquisar documentos que contenham palavras similares a java como por ex. lava, jaba...
Sem comentários:
Enviar um comentário