Вы находитесь на странице: 1из 12

30/01/12

U ando o Apache L cene pa a P oc a de Te o

Portugu s (Brasil)

Conecte-se (ou Registrar)

Itens T cnicos

Downloads e Trials

Comunidade

Usando o Apache Lucene para Procura de Texto


Construindo facilmente recursos de procura e ndice nos aplicativos Amol Sonawane, Senior Staff Software Engineer, IBM Resumo: Neste artigo, aprenda sobre o Apache Lucene, uma biblioteca de mecanismos de procura de texto cheio de recursos e de alto desempenho. Explore a arquitetura Lucene e suas APIs de ncleo. Aprenda a usar o Lucene para fazer uma procura de texto completo em toda a plataforma, efetuar indexao, exibir resultados e estender uma procura. Data: 17/Dez/2009 N vel: Introdutrio Atividade: 4524 visualizaes Comentrios: 0 (Visualizar | Incluir comentrio - Conectar) Mdia de classificao (7 votos) Classificar este artigo Introduo O Lucene uma biblioteca de mecanismo de procura de texto altamente escalvel e de software livre a partir do Apache Software Foundation. Voc pode usar o Lucene em aplicativos comerciais e de software livre. As APIs poderosas do Lucene focam principalmente na indexao e na procura de texto. Elas podem ser usadas para criar recursos de procura para aplicativos, como clientes de e-mail, listas de correspondncias, procuras da Web, procuras de banco de dados, etc. Web sites como Wikipedia, TheServerSide, jGuru e LinkedIn foram desenvolvidos com o Lucene. O Lucene tambm fornece recursos de procura para o Eclipse IDE, Nutch (o famoso recurso de procura da Web de software livre) e empresas como IBM, AOL e Hewlett-Packard. O Lucene suporta vrias outras linguagens de programao, dentre elas Perl, Python, C++ e .NET. A partir de 30 de julho de 2009, a verso mais recente do Lucene na linguagem de programao Java V2.4.1. O Lucene possui vrios recursos. Ele: Possui algoritmos de procura poderosos, precisos e eficientes. Calcula uma pontuao para cada documento que corresponda a uma determinada consulta e retorna a maioria dos documentos relevantes classificados por essas pontuaes. Suporta vrios tipos de consultas poderosos, como PhraseQuery, WildcardQuery, RangeQuery, FuzzyQuery, BooleanQuery e outros. Suporta a anlise de expresses de consulta completas digitadas pelo usurio. Permite que os usurios estendam o comportamento da procura usando classificao, filtragem e anlise de expresso de consulta. Usa um mecanismo de bloqueio baseado em arquivo para impedir modificaes de ndices simultneos. Permite a procura e a indexao simultaneamente. Construindo Aplicativos Usando o Lucene Como mostra a Figura 1, a criao de um aplicativo de procura cheio de recursos usando o Lucene envolve, primeiramente, a indexao de dados, a procura de dados e a exibio de resultados de procura. Figura 1. Etapas para criar aplicativos usando o Lucene

.ibm.com/de elope

o k /b /ja a/lib a /o -apache-l cene ea ch/

1/12

30/01/12

U ando o Apache L cene pa a P oc a de Te o

Esse artigo usa fragmentos de cdigo a partir de um aplicativo de amostra desenvolvido com a tecnologia Java usando o Lucene V2.4.1. O aplicativo de exemplo indexa um conjunto de documentos de e-mail armazenados nos arquivos de propriedades e mostra como usar as APIs de consulta do Lucene para procurar um ndice. Com esse exemplo, voc tambm pode se familiarizar com as operaes bsicas de ndice. Indexando Dados O Lucene permite indexar quaisquer dados disponveis no formato textual. O Lucene pode ser usado quase com qualquer origem de dados contanto que as informaes textuais possam ser extradas dela. Voc pode usar o Lucene para indexar e procurar dados armazenados em documentos HTML, Microsoft Word, arquivos PDF e outros. A primeira etapa na indexao de dados disponibiliz-los em um formato de texto simples. Faa isso usando os analisadores e conversores de dados customizados. O Processo de Indexao A Indexa o um processo de converter os dados de texto em um formato que facilita a procura rpida. Uma analogia simples um ndice que seria localizado no final de um manual: Esse ndice aponta para o local dos tpicos que aparecem no manual. O Lucene armazena os dados de entrada em uma estrutura de dados chamada de ndice invertido , que armazenado no sistema de arquivos ou na memria como um conjunto de arquivos de ndice.A maioria dos mecanismos de procura da Web usa um ndice invertido. Ele permite que os usurios executem procuras rpidas por palavras-chave e localizem os documentos que correspondem a uma determinada consulta. Antes que os dados de texto sejam includos no ndice, eles so processados por um analisador (usando um processo de anlise). Anlise Anlise a converso dos dados de texto em uma unidade de procura fundamental, chamada de termo. Durante a anlise, os dados de texto passam por vrias operaes: extrao das palavras, remoo de palavras comuns, ignorar pontuao, reduo de palavras para o formato de raiz, alterao das palavras para minsculas, etc. A anlise acontece imediatamente antes de analisar a indexao e a consulta. A anlise converte os dados de texto em tokens e esses tokens so includos como termos no ndice do Lucene. O Lucene fornecido com vrios analisadores integrados, como o SimpleAnalyzer, o StandardAnalyzer, StopAnalyzer, SnowballAnalyzer, e outros. Eles diferem na maneira pela qual tokenizam o texto e aplicam os filtros. Conforme a anlise remove as palavras antes de indexar, ela diminui o tamanho do ndice, mas isso poder ter um efeito negativo na preciso do processamento da consulta. possvel ter maior controle sobre o processo de anlise ao criar analisadores customizados usando os blocos de construo bsicos fornecidos pelo Lucene. A Tabela 1 mostra os analisadores integrados e como eles podem processar dados. Tabela 1. Analisadores Integrados do Lucene Analisador Opera es realizadas nos dados de texto WhitespaceAnalyzerDivide os tokens em espao em branco SimpleAnalyzer Divide o texto em caracteres que no sejam letras e coloca o texto em minsculo
.ibm.com/de elope o k /b /ja a/lib a /o -apache-l cene ea ch/ 2/12

30/01/12

U ando o Apache L cene pa a P oc a de Te o

StopAnalyzer

Remove as palavras irrelevantes (desnecessrias para procura) e coloca o texto em minscula Tokeniza o texto com base em uma gramtica sofisticada que reconhece endereos de e-mail, acrnimos, caracteres chins, japons e coreano, caracteres alfanumricos, e outros StandardAnalyzer Coloca o texto em minsculo e remove palavras comuns. Classes de Indexao de Ncleo
Drtro ie i

Uma classe abstrata que representa o local onde os arquivos de ndice so armazenados. H duas subclasses principais normalmente usadas:
F D r c o y Sietr

Uma implementao do D r t r oque armazena ndices no sistema de arquivos real.Isso til para ie i

grandes ndices.
RMietr ADrcoy

Uma implementao que armazena todos os ndices na memria. Isso ideal para ndices menores que podem ser completamente carregados na memria e destrudos quando o aplicativo encerrar. Conforme o ndice mantido na me, ele comparadamente mais rpido.
Aaiao nlsdr

Conforme j falado, os analisadores so responsveis por processar os dados de texto e convert-los em tokens armazenados no ndice. I d x r t raceita um analisador usado para tokenizar os dados antes de serem indexados. Para indexar o texto neWie corretamente, use um analisador que seja apropriado para o idioma do texto que precisa ser indexado. Os analisadores padro funcionam bem com o idioma ingls. H vrios outros analisadores no sandox Lucene, dentre eles para o chins, japons e coreano.
Idxeeinoiy neDltoPlc

Uma interface usada para implementar uma poltica para customizar a excluso de consolidaes obsoletas do diretrio de ndice. A poltica de excluso padro K e O l L s C m i D l t o P l c , que mantm apenas as consolidaes mais recentes e epnyatomteeinoiy remove imediatamente todas as consolidaes anteriores depois que a nova consolidao for feita.
Idxrtr neWie

Um classe que cria ou mantm um ndice. Seu construtor aceita um booleano que determina se um novo ndice criado ou se um ndice existente aberto. Ele fornece mtodos para incluir, excluir ou atualizar documentos no ndice. As alteraes feitas no ndice so inicialmente armazenadas em buffer na memria e periodicamente esvaziadas para o diretrio de ndice.I d x r t rExpe vrios campos que controlam como os ndices so armazenados em buffer na memria e gravados no neWie disco. As alteraes feitas no ndice no so visveis no I d x e d r, a menos que o mtodo de consolidao ou de fechamento do neRae I d x r t rseja chamado. I d x r t rcria um arquivo de bloqueio para o diretrio para impedir distoro de ndice devido a neWie neWie atualizaes de ndice simultneas. I d x r t rpermite que os usurios especifiquem uma poltica de excluso de ndice opcional. neWie Li agem 1. U ando o L cene I d x r t r neWie

/Ciriscad Drtrood o aqio d dc sroamznds /ra ntni o ie i ne s ruvs e nie e raeao DrcoyfDrcoy= FDrcoygtietr(neDrcoy; ietr sietr Sietr.eDrcoyidxietr) / Ciriscad aaiao,qesr uaapr tknzr * ra ntni o nlsdr u e sd aa oeia o ddsd etaa* s ao e nrd / Aaye sadrAaye =nwSadrAaye(; nlzr tnadnlzr e tnadnlzr) /Ciru nv dc /ra m oo nie boen cet =tu; olao rae re /Ciraiscad pltc d ecu /ra ntni a oia e xlso IdxeeinoiydltoPlc =nwKeOlLsCmiDltoPlc(; neDltoPlc eeinoiy e epnyatomteeinoiy) idxrtr=e IdxrtrfDrcoysadrAaye,rae neWie nw neWie(sietr,tnadnlzrcet, dltoPlc,neWie.aFedeghULMTD; eeinoiyIdxrtrMxilLnt.NIIE)

Incluindo Dados em um ndice H duas classes envolvidas na incluso de dados de texto no ndice.
O C m orepresenta uma parte dos dados consultados ou recuperados na procura. ap

A classe C m oengloba o nome de campo e seu valor. ap O Lucene fornece as opes para especificar se um campo precisa ser indexado ou analisado e se o valor precisa ser armazenado. Essas opes podem ser transmitidas ao criar uma instncia de campo. A tabela abaixo mostra os detalhes das opes de metadados de C m o. ap
.ibm.com/de elope o k /b /ja a/lib a /o -apache-l cene ea ch/ 3/12

30/01/12

U ando o Apache L cene pa a P oc a de Te o

Tabela 2. Detalhes das op es de metadados de C m a Opo Descrio Usado para armazenar o valor dos campos. Ideal para campos exibidos com o caminho de arquivo de Field.Store.Yes resultados de procura e com a URL, por exemplo. Field.Store.No O valor de campo no armazenado o corpo da mensagem de e-mail, por exemplo. Ideal para campos pouco procurados usados com os campos armazenados, como por exemplo, Field.Index.No caminho de arquivo. Field.Index.ANALYZED Usado para campos indexados e analisados o corpo e o assunto da mensagem de e-mail, por exemplo. Usado para campos indexados mas no analisados Ele preserva o valor original do campo em sua Field.Index.NOT_ANALYZED totalidade datas e nomes pessoais, por exemplo. E um D c m n o uma coleta de campos. O Lucene tambm suporta a impulso de documentos e campos, que um recurso til quando ouet quiser dar importncia a alguns dos dados indexados. Indexar um arquivo de texto envolve agrupar os dados de texto em campos, criar um documento, preench-lo com campos e incluir o documento no ndice usando I d x r t r neWie. A Listagem 2 mostra um exemplo da incluso de dados em um ndice. Listagem 2. Incluindo dados em um ndice

/Eaa1 Peaa ddspr idxo Etardds * *tp . rprr ao aa nea. xri ao. / Srn sne =poete.ePoet(sne"; tig edr rprisgtrpry"edr) Srn dt =poete.ePoet(dt"; tig ae rprisgtrpry"ae) Srn sbet=poete.ePoet(sbet) tig ujc rprisgtrpry"ujc"; Srn msae=poete.ePoet(msae) tig esg rprisgtrpry"esg"; Srn ealo =fl.eAsltPt(; tig midc iegtboueah) / Eaa2 ArprddsnsCmo eicu-o e u Dcmno* * tp . gua ao o aps nlls m m ouet / FedsneFed= il edril nwFed"edr,edrFedSoeYSFedIdxNTAAYE) e il(sne"sne,il.tr.E,il.ne.O_NLZD; Fedealaeil = il midtfed nwFed"ae,aeFedSoeN,il.ne.O_NLZD; e il(dt"dt,il.tr.OFedIdxNTAAYE) Fedsbetil = il ujcFed nwFed"ujc"sbetFedSoeYSFedIdxAAYE) e il(sbet,ujc,il.tr.E,il.ne.NLZD; Fedmsaeil = il esgfed nwFed"esg"msaeFedSoeN,il.ne.NLZD; e il(msae,esg,il.tr.OFedIdxAAYE) FedealoFed= il miDcil nwFed"miDc,midcFedSoeYS e il(ealo"ealo,il.tr.E, FedIdxN) il.ne.O; Dcmn dc=nwDcmn(; ouet o e ouet) / Icuresscmo e u DcmnoLcn / nli se aps m m ouet uee dcadsneFed; o.d(edril) dcadealaeil) o.d(midtfed; dcadsbetil) o.d(ujcFed; dcadmsaeil) o.d(esgfed; dcadealoFed; o.d(miDcil) /Eaa3 Icures dcmnon nieLcn. /tp : nli se ouet o dc uee idxrtradouetdc; neWie.dDcmn(o)

Procurando Dados Indexados A procura o processo de buscar palavras no ndice e de localizar os documentos que contm essas palavras. A criao de recursos de procura usando a API de procura do Lucene um processo direto e fcil. Essa seo aborda as classes principais a partir da API de procura do Lucene. Procurador
P o u a o uma classe base abstrata que possui vrios mtodos de procura sobrecarregadas. I d x e r h r uma subclasse rcrdr neSace

normalmente utilizada que permite procurar ndices armazenados em um determinado diretrio. O mtodo P o u a retorna uma coleta rcrr ordenada de documentos classificados pelas pontuaes computadas. O Lucene calcula uma pontuao de cada documento que
.ibm.com/de elope o k /b /ja a/lib a /o -apache-l cene ea ch/ 4/12

30/01/12

U ando o Apache L cene pa a P oc a de Te o

corresponde a uma determinada consulta. I d S a c e um thread-safe, ou seja, uma instncia nica que pode ser usada por vrios e e h encadeamentos simultaneamente. Termo Te mo a unidade mais fundamental de procura. Ele composto de dois elementos: o texto da palavra e o nome do campo no qual o texto ocorre. Os objetos do termo so envolvidos na indexao, mas so criados pelos componentes internos do Lucene. Consulta e Subclasses
a uma classe base abstrata para procuras. Procurar por uma palavra ou frase especificada envolve agrup-la em um termo, incluir os termos em um objeto de consulta e transmitir esse objeto de consulta para os mtodos de procura do I d S a c e . e e h C

O Lucene fornecido com vrios tipos de implementaes de consulta concretas, como TermQuery, BooleanQuery, PhraseQuery, PrefixQuery, RangeQuery, MultiTermQuery, FilteredQuery, SpanQuery, etc. A seo abaixo descreve as classe de consulta primrias a partir da API de consulta do Lucene.
TrQe emur

O tipo de consulta mais bsico para procurar um ndice.T Q e pode ser construdo usando um termo nico. O valor do termo e deve fazer distino entre mai sculas e min sculas, mas isso no totalmente verdade. importante notar que os termos transmitidos para procura devem ser consistentes com os termos produzidos pela anlise de documentos, porque os analisadores executam muitas operaes no texto original antes de criar um ndice. Por exemplo, considere o assunto de e-mail "Aberturas de tarefa para Profissionais Java em Bangalore." Suponha que voc indexou isso usando o S a d d a e . Agora, se procurarmos por "Java" usando o T Q e , nada ser retornado j que o texto foi a A e normalizado e colocado em letras min sculas pelo S a d d a e . Se procurarmos pela palavra em letras min sculas "java," a A todos os e-mails que contiverem essa palavra no campo de assunto sero retornados. Li agem 3. P oc ando U ando o T r Q e emur

/P c a e a c a aa a"aa / - i j " c a d a e Sace id Sace = e Id Sace( d D e e h e e h e e h i e i c T e e = e T ( be ""aa) e " jc ,j "; Qe e Qe = e T Qe (e ) e ; T Dc Dc =id Sace.e c(e Qe ,0; e e h a h 1)

) ;

Rneur agQe

Voc pode procurar em um intervalo usando o R g Q e . Todos os termos so organizados de maneira lexicogrfica no ndice. O a e R g Q e do Lucene permite que os usurios procurem termos dentro de um intervalo.O intervalo pode ser especificado usando a e um termo de incio e um termo de encerramento, que pode ser includo ou excludo. Li agem 4. P oc ando em m In e alo

/ R gQe ea eSac a * a e :e h i f 0/620 10/09 b hic ie* / T e bg = e T (d e,2000"; ei e "a ""0961) T e ed= e T (d e,2000"; e "a ""0966) Qe e = e R gQe (ei,ed a e bg , e; )

60/09 /620

PeiQe rf ur

Voc pode procurar usando uma palavra prefixada com o P e i Q e , que usado para contruir uma consulta que corresponda f aos documentos que contm os termos que iniciam com um prefixo de palavra especificada. Li agem 5. P oc ando U ando o P e i Q e rf ur

/P c a e a / - i e e c a eee e eia f d ea aa a' b j ' PeiQe f eiQe = e PeiQe (e T ( ed "" b); f f e " e ,j ")
.ibm.com/de elope o k /b /ja a/lib a /o -apache-l cene ea ch/ 5/12

30/01/12

U ando o Apache L cene pa a P oc a de Te o

PeiQe f

= e PeiQe (e T ( ed "" b); f e " e ,j ")

Boenur olaQe

Voc pode construir consultas poderosos ao combinar qualquer n mero de objetos de consulta usando o B e Q e . Ele usa o a e e uma clusula associada a uma consulta que indica se uma consulta pode ocorrer, deve ocorrer ou no deve ocorrer. Em um B e Q e , o n mero mximo de clusulas restrito a 1.024, por padro. possvel configurar o mximo de classes ao chamar a o mtodo e M C a e a C . Listagem 6. Procurando Usando o B o e n u r olaQe

/ P c a e a / - i e e 'aa e'ag j ' b a e ' c a d a e Qe e 1= e T Qe (e T ( be ""aa); e e " jc ,j ") Qe e 2= e T Qe (e T ( be ""ag e e " jc ,b a e); ") B e Qe a e = e B e Qe (; a ) e .d( e 1B e Ca eOc .UT; ad , a .c MS) e .d( e 2B e Ca eOc .UT; ad , a .c MS)

PrsQe haeur

Voc pode procurar por uma frase usando o P a e e . Um P a e e corresponde aos documentos que contm uma h Q h Q determinada sequncia de termos. P a e e usa informaes posicionais do termo que so armazenadas em um ndice. A h Q distncia entre os termos que so considerados para serem correspondidos chamada de lop. Por padro, o valor do slop zero e pode ser configurado ao chamar o mtodo e S . P a e e tambm suporta vrias frases de termos. h Q Listagem 7. Procurando Usando o P r s Q e haeur

/ Ee * d P ae e :P c a e a e h Q - i c a d a e ./ * P ae e h Q e = e P ae e (; h Q ) e .eS () 1; e .d(e T ( be "" b); ad e " jc ,j ") e .d(e T ( be "" eig); ad e " jc , ") e .d(e T ( be ""2e); ad e " jc ,je")

e afae' b j

eigje' 2e

WlcrQe idadur

Um W d a d e implementa uma consulta com caractere curinga, podendo fazer procuras como arch* (permitindo localizar i c Q documentos que contm architect, architecture, etc.). Dois caracteres curingas padro so usados:
*para zero

ou mais

?para um ou mais

Pode haver uma queda de desempenho se voc tentar procurar usando um padro no incio de uma consulta com caractere curinga, j que todos os termos no ndice sero consultados para localizar documentos correspondentes. Listagem 8. Procurando Usando WildcardQuer

/P c a / ' c* a h' aa c ia e ae d e a a g e - i e e a aa a ' cie ' a h c c a d a e . / Qe e = e W dad e (e T ( be "" c*); i c Q e " jc ,a h")

F u

Qe ur

Voc pode procurar por termos semelhantes com o F


.ibm.com/de elope o k /b /ja a/lib a /o -apache-l cene ea ch/

Qe

, que corresponde s palavras que so semelhantes a sua palavra


6/12

30/01/12

U ando o Apache L cene pa a P oc a de Te o

especificada. A medida de semelhana baseia-se no algoritmo Levenshtein (editar distncia). Na Listagem 9, F z y u r usado uzQey para localizar uma correspondncia prxima de uma palavra que foi digitada incorretamente, como "admnistrtor," embora essa palavra no tenha sido indexada. Listagem 9. Procurando Usando o F u

Qe ur

/ Poua premisqepsumplva smlatsa'dnsro'n cmod * rcrr o -al u ose aars eehne amitdr o ap e asno Nt qedgtmsicreaet amittrau./ sut. oe u iiao nortmne dnsro qi* Qeyqey=nwFzyur(e Tr(sbet,"dnsro") ur ur e uzQeynw em"ujc" amittr);

Qe Pre ur asr Q e y a s r til para analisar cadeias de consultas inseridas pelo urPre

usurio. Ele pode ser usado para analisar expresses de consultas inseridas pelo usurio em um objeto de consulta do Lucene, que pode ser transmitido para o mtodo de procura do Idxerhr n e S a c e .Ele pode analisar expresses de consultas completas. Q e y a s rconverte internamente uma cadeia de consulta urPre inserida pelo usurio em uma das subclasses de consulta concretas. necessrio escapar caracteres especiais, como * ?com uma , barra invertida (\ Voc pode construir consultas booleanas textualmente usando os operadores A D O e N T ). N, R O. Listagem 10. Procurando por express o de consulta inserida pelo usurio
Qeyasrqeyasr=nwQeyasr"ujc"nwSadrAaye() urPre urPre e urPre(sbet,e tnadnlzr); / Poua emisqecn ma plva 'o oeig'ad'nt ad'ue / rcrr -al u ot s aars jb pnns n .e' n pn' Qeyqey=qeyasrpre"o oeig AD.e ADpn"; ur ur urPre.as(jb pnns N nt N ue)

Exibindo Resultados de Procura


I d x e r h rretorna uma matriz de referncias nos resultados de procura classificados, neSace

como documentos que correspondem a uma determinada consulta. Voc pode decidir o nmero dos principais resultados de procura que precisam ser recuperados ao especific-lo no mtodo de procura do I d x e r h r paginao customizada pode ser criada sobre isso. Voc pode incluir um aplicativo da Web n e S a c e .A customizado ou um aplicativo de desktop para exibir os resultados de procura. As classes primrias envolvidas na recuperao dos resultados de procura so S o e o e T p o s crDc oDc.
Soeo crDc

Um ponteiro simples para um documento contido nos resultados de procura. Isso engloba a posio de um documento no ndice e a pontuao calculada pelo Lucene.
Tpos oDc

Engloba o nmero total de resultados de procura e uma matriz de S o e o . crDc O fragmento de cdigo abaixo mostra como recuperar documentos contidos nos resultados de procura. Listagem 11. Exibindo Resultados de Procura
/ Opier prmtoacnut asreeuaaeo * rmio aer osla e xctd sgnoprmtoidc qennu dsrslao d pouasr bsao* eud aer nia u ehm o eutds e rcr e ucd / Tpostpos=idxerhrsac(ur,0; oDc oDc neSace.erhqey2) Sse.u.rnl(Ttlht "tposttlis; ytmotpitn"oa is +oDc.oaHt) / Otruamti d rfrnisasdcmno crepnio / be m arz e ee ca o ouets orsodds Soeo[ soeoAry=tpossoeos crDc] crDsra oDc.crDc; frSoeo soeo:soeoAry{ o(crDc crdc crDsra) /Rcprrodcmnocrepnioemsrrdtle rlvne /euea ouet orsodd ota eahs eeats Dcmn dc=idxerhrdcsoeo.o) ouet o neSace.o(crdcdc; Sse.u.rnl(\Sne:"dcgtil(sne".tigau() ytmotpitn"nedr +o.eFed"edr)srnVle); Sse.u.rnl(Sbet "dcgtil(sbet)srnVle); ytmotpitn"ujc: +o.eFed"ujc".tigau() Sse.u.rnl(Ealfl lcto:" ytmotpitn"mi ie oain +o.eFed"miDc)srnVle); dcgtil(ealo".tigau() }

Operaes Bsicas de ndices


.ibm.com/de elope o k /b /ja a/lib a /o -apache-l cene ea ch/ 7/12

30/01/12

U ando o Apache L cene pa a P oc a de Te o

As operaes bsicas de ndice incluem remover e impulsionar documentos. Removendo Documentos de um ndice Geralmente necessrio atualizar os aplicativos com os dados mais recentes e remover dados antigos. Por exemplo, no caso de mecanismos de procura da Web, o ndice precisa ser atualizado regularmente conforme novas pginas da Web so includas e as pginas da Web no-existentes precisam ser removidas. O Lucene fornece a interface I d x e d rque permite executar essas operaes em um neRae ndice.
I d x e d r uma classe abstrata que fornece vrios mtodos para acessar o neRae

ndice. O Lucene refere internamente os documentos com nmeros de documentos que podem ser alterados conforme os documentos so includos ou excludos do ndice. O nmero do documento usado para acessar um documento no ndice. I d x e d rno pode ser usado para atualizar ndices em um diretrio para o qual o neRae I d x r t rj est aberto. I d x e d rsempre procura pela captura instantnea do ndice quando ele estiver aberto. Quaisquer neWie neRae alteraes no ndice no estaro visveis at o I d x e d rser reaberto. importante que os aplicativos que usam o Lucene reabram os neRae Idxedr n e R a e para ver as atualizaes de ndice mais recentes. Listagem 12. Excluindo Documentos do ndice
/ Ecurtdso emisd dc rcbdse mi d 20. / xli oo s -al o nie eeio m ao e 09 Idxedridxedr=Idxedroe(neDrcoy; neRae neRae neRae.pnidxietr) idxedrdltDcmnsnwTr(mnh,0") neRae.eeeouet(e em"ot""5); /Fca o aqio d dc ascao esla a ecu e n dso /ehr s ruvs e nie soids avr s xls s o ic idxedrcoe) neRae.ls(;

Impulsionando Documentos e Campos s vezes voc pode querer dar mais importncia a alguns dos dados indexados. Voc pode querer fazer isso ao configurar um fator de impulso para um documento ou campo.Por padro, todos os documentos e campos possuem o mesmo fator de impulso padro de 1.0. Listagem 13. Campos de Impulso
i(ujc.ooeCs(.neO(pn" ! -) fsbettLwrae)idxf"ue) = 1{ / / Eii rslao d pouaqecn pn n pier asnoa cniua xbr eutds e rcr u otm ue o rmio sut o ofgrr oftrd iplo ao e mus sbetil.eBot22) ujcFedstos(.F; } / / Eii rslao d pouaqecn 'o'n edr d emi d rmtne xbr eutds e rcr u otm jb o neeo e -al o eeet i(edrtLwrae)idxf"o"!-) fsne.ooeCs(.neO(jb)=1{ lcnDcmn.eBot21) ueeouetstos(.F; }

Estendendo a Procura O Lucene fornece um recurso avanado chamado classifica o. Voc pode classificar os resultados da procura por campos que indicam a posio relativa dos documentos no ndice. O campo usado para classificao deve ser indexado, mas no tokenizado. H quatro tipos possveis de valores de termos que podem ser colocados nos campos de classificao: integers, longs, floats ou strings. Os resultados da procura tambm podem ser classificados pela ordem do ndice. O Lucene classifica os resultados ao diminuir a relevncia, como a pontuao calculada, por padro. A ordem de classificao tambm pode ser alterada. Listagem 14. Classificando Resultados de Procura
/ Poua emisqepsumaplva'o'n asnoertra rslao * rcrr -al u ose aar jb o sut eonr eutds casfcdspl emi d rmtnee odmdcecne lsiiao eo -al o eeet m re erset. * / SrFedsrFed=nwSrFed"edr,tu) otil otil e otil(sne" re; Sr srBSne =nwSr(otil) ot otyedr e otsrFed; WlcrQeyqey=nwWlcrQeynwTr(sbet,jb") idadur ur e idadur(e em"ujc""o*); TpilDc tpilDc = oFedos oFedos idxerhrsac(ur,ul2,otyedr; neSace.erhqeynl,0srBSne) /Casfcrprodmd dc /lsiia o re e nie tpilDc =idxerhrsac(ur,ul2,otIDXRE) oFedos neSace.erhqeynl,0Sr.NEODR;
.ibm.com/de elope o k /b /ja a/lib a /o -apache-l cene ea ch/ 8/12

30/01/12

U ando o Apache L cene pa a P oc a de Te o

Fil ragem um processo que restringe o espao de procura e permite que apenas um subconjunto de documentos seja considerado para as ocorrncias de procura. Voc pode usar esse recurso para implementar os resultados de procura dentro de procura ou para implementar a segurana sobre os resultados de procura. O Lucene fornecido com vrios filtros integrados, como BooleanFilter, CachingWrapperFilter, ChainedFilter, DuplicateFilter, PrefixFilter, QueryWrapperFilter, RangeFilter, RemoteCachingWrapperFilter, SpanFilter, etc. F l r pode ser transmitido para o mtodo de procura do I d S a c e para filtrar documentos que correspondem aos ito ne erhr critrios de filtragem. Listagem 15. Filtrando Resultados de Procura
/Flrro rslao pr msrraea o emisqepsumocmo *ita s eutds aa ota pns s -al u ose ap d rmtnepeiaocm'os * o eeet rf d o jb' / Tr pei =n Tr(sne""os) em rf e em"edr,jb"; Fle peiFle =n PeiFle(rf ) itr rf itr e rf itrpei ; WlcrQe qe =n WlcrQe (e Tr(sbet,jb") idadur ur e idadur n em"ujc""o*); id Sace.erhqe ,rf Fle,0; ne erhrsac(ur pei itr2)

Concluso O Lucene, uma biblioteca de software livre muito conhecida a partir do Apache, fornece recursos de indexao e de procura poderosos para os aplicativos. Ele fornece uma API simples e fcil de usar que requer entendimento mnimo dos componentes internos de indexao e procura. Neste artigo, voc aprendeu sobre a arquitetura Lucene e suas APIs principais. O Lucene desenvolveu vrios aplicativos de procura utilizados por vrios Web sites e organizaes famosos. Ele suporta vrias outras linguagens de programao. O Lucene possui uma grande e ativa comunidade tcnica do usurio. Se voc est a procura de uma biblioteca de procura de software livre de alto desempenho, escalvel e fcil de usar, o Apache Lucene uma tima escolha.

Download Descrio Lucene code sample Nome os-apache-lucenesearch-SampleApplication.zip Tamanho 755KB M todo de download HTTP

Informaes sobre mtodos de download

Recursos Aprender Saiba tudo sobre o Apache Lucene, incluindo as notcias mais recentes. L cene in Ac ion, por Erik Hatcher e Otis Gospodnetic, o guia oficial para o Lucene. Ele descreve como indexar os dados, incluindo tipos que voc definitivamente precisa saber, como MS Word, PDF, HTML e XML. Ele ensina como procurar, classificar, filtrar e realar os resultados de procura. Para ouvir entrevistas e discusses importantes para os desenvolvedores de software, consulte os Podcasts developerWorks . Mantenha-se atualizado com Webcasts e Eventos Tcnicos do developerWorks. Acompanhe o developerWorks no Twitter. Consulte as conferncias, feiras comerciais, webcasts e outros Eventos programados ao redor do mundo que so de interesse dos desenvolvedores de software livre IBM. Visite a rea de Software Livre developerWorks para obter informaes completas sobre instrues, ferramentas e atualizaes de projeto para ajudar voc a desenvolver com as tecnologias de software livre e us-las com os produtos IBM.

.ibm.com/de elope

o k /b /ja a/lib a /o -apache-l cene ea ch/

9/12

30/01/12

U ando o Apache L cene pa a P oc a de Te o

Assista e aprenda gratuitamente sobre a IBM, conhea as tecnologias de software livre e as funes de produtos com os Demos developerWorks On demand . Obter produtos e tecnologias Inove seu projeto de desenvolvimento de software livre com o Software de Avaliao IBM, disponvel para download ou no DVD. Faa download das Verses de Avaliao de Produto IBM ou explore as avaliaes on-line no IBM SOA Sandbox e comece a trabalhar com as ferramentas de desenvolvimento de aplicativo e com produtos de middleware a partir do DB2, Lotus, Rational, Tivolie WebSphere. Discutir Participe dos Blogs do developerWorks e entre na comunidade developerWorks. Sobre o autor

Amol Sonawane engenheiro de software snior e ps-graduado em tecnologia da informao do International Institute of Information Technology, Bangalore. Ele projetou e desenvolveu software para diversos domnios, dentre eles gerenciamento de cadeia de suprimento, integrao de aplicativo corporativo e inteligncia de negcios. Possui experincia no desenvolvimento de aplicativos usando tecnologias e estruturas J2EE (Struts e Spring). Ele mora em Pune, ndia, com sua esposa Anuja. Alm de trabalhar com codificao, ele tambm gosta de fotografia, jogo de xadrez e quebra-cabeas. Fechar [x]

developerWorks: Registre-se
IBM ID: Precisa de um ID IBM? Esqueceu seu ID IBM? Senha: Esqueceu sua senha? Alterar sua senha Mantenha-me conectado. Ao clicar em Enviar, voc concorda com os termos de uso do developerWorks.
En iar Cancelar

Na primeira vez que voc efetua sign in no developerWorks, um perfil criado para voc. Informaes selecionadas do seu perfil developerWorks so exibidas ao p blico, mas voc pode edit-las a qualquer momento. Seu primeiro nome, sobrenome (a menos que escolha ocult-los), e seu nome de exibio acompanharo o contedo que postar. Todas as informaes enviadas so seguras. Fechar [x]

Selecione seu nome de exibio


Ao se conectar ao developerWorks pela primeira vez, criado um perfil para voc e necessrio selecionar um nome de exibio. O nome de exibio acompanhar o contedo que voc postar no developerWorks.
.ibm.com/de elope o k /b /ja a/lib a /o -apache-l cene ea ch/ 10/12

30/01/12

U ando o Apache L cene pa a P oc a de Te o

Escolha um nome de exibi o de 3 - 31 caracteres. Seu nome de exibio deve ser exclusivo na comunidade do developerWorks e no deve ser o seu endereo de email por motivo de privacidade. Nome de exibio: (Deve possuir de 3 a 31 caracteres.)

Ao clicar em Enviar, voc concorda com os termos de uso do developerWorks.


En iar Cancelar

Todas as informa es enviadas so seguras. Mdia de classificao (7 votos) 1 estrela 1 estrela 2 estrelas 2 estrelas 3 estrelas 3 estrelas 4 estrelas 4 estrelas 5 estrelas 5 estrelas
En iar

Incluir comentrio: Conectar or registre-se para deixar um comentrio. Observao: elementos HTML no so suportados nos comentrios.

Notificar-me quando um comentrio for adicionado1000 caracteres restantes

Postar

Nenhum comentrio postado para esse artigo


Imprimir esta p gina Compartilhe esta p gina Siga o developerWorks

Sobre Ajuda Entre em contato conosco

Feeds

Relatar abuso Termos de uso Privacidade Acessibilidade (Ingl s)

IBM Academic Initiative IBM PartnerWorld Industry Network

.ibm.com/de elope

o k /b /ja a/lib a /o -apache-l cene ea ch/

11/12

30/01/12

U ando o Apache L cene pa a P oc a de Te o

.ibm.com/de elope

o k /b /ja a/lib a /o -apache-l cene ea ch/

12/12