O documento apresenta uma introdução ao Lucene.Net, incluindo o que é um mecanismo de busca de texto, por que usar o Lucene.Net e como funciona, cobrindo tópicos como entidades, indexação, busca e analisadores.
6. Text Search Engine Mauris dapibus, mauris in pharetra auctor, sapien est feugiat metus, ac suscipit mi erat nec leo. Etiam viverra, erat eu vestibulum facilisis, ligula dolor blandit sapien, et viverra sem eros aliquam libero. Lorem ipsum dolor sit amet, consectetur adipiscing elit. imperdiet mattis placerat. Duis sagittis vehicula lacus, a mauris lectus ultrices sit amet. Etiam viverra, erat eu vestibulum facilisis, mauris ligula dolor blandit sapien, et viverra sem eros aliquam libero. Donec porta urna eget ipsum ullamcorper vitae consequat nunc pulvinar. Donec nec ligula sem. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec lectus dolor, facilisis non facilisis eget, vehicula eget odio. Mauris sed dui non tortor pellentesque condimentum vitae et purus. Aliquam mauris vitae luctus arcu. Sed dignissim lorem hendrerit elit semper tristique. Ut et augue suscipit velit sodales bibendum. Class aptent taciti sociosquad litora torquent per conubia nostra, per inceptos himenaeos. Sed blandit magna leo. Metus dapibus, mauris in pharetra auctor, sapien est feugiat, ac suscipit mi erat nec leo. Nunc ut mauris est. Nunc imperdiet ultricies libero a vulputate. Nunc ut mauris est. Nunc imperdiet ultricies libero a vulputate. Mauris dapibus, pharetra auctor, sapien est feugiat metus, ac suscipit mi erat nec leo. Etiam viverra, erat eu vestibulum facilisis, ligula dolor blandit sapien, mauris et viverra sem eros aliquam libero. Mauris dapibus, mauris in pharetra auctor, sapien est feugiat metus, ac suscipit mi mauris erat nec leo. Etiam viverra, erat eu vestibulum facilisis, ligula dolor blandit sapien, et viverra sem eros aliquam libero. Nunc ut mauris est. Nunc imperdiet ultricies libero a vulputate. Nunc ut ultricies est. Nunc imperdiet libero a vulputate. Donec lectus dolor, facilisis non facilisis eget, vehicula eget odio. Morbi sed dui non tortor pellentesque condimentum vitae et purus.
7.
8.
9.
10.
11. Base Ports Nutch Lucene.net Solr PyLucene Alternativas SQL Server FTS Xapian Ferret
19. 3 1 Field IndexWriter 2 Name Analyzer Value 7 Document 4 Options Field Field 5 6 Field Field Name Value Options Index Indexing
20. 1 IndexWriter Index 2 IndexWriter Index Index IndexWriter 3 IndexWriter IndexWriter Index IndexWriter Index Index Indexing
21. 2 1 QueryParser 4 User Query Query Analyzer Query Query Security Trimming 3 Machine Created Filters Query 5 6 Search Results IndexSearcher Results Score 7 DocId Document Index Field Field Field Indexing
22. Analyzers Isto é umafraseparamostrarcomofuncionamAnalisadores. tokenize Isto é mostrar frase para como funcionam Analisadores uma isto é mostrar frase para como funcionam analisadores uma lowercase Isto é mostrar frase para como funcionam analisadores filter stopwords reduce to stems ist é mostr fras par como funcion analis
Lucene.net - http://incubator.apache.org/lucene.net/Solr - http://lucene.apache.org/solr/Lucene - http://lucene.apache.org/Xapian - http://xapian.org/Mais implementaçoes em http://wiki.apache.org/lucene-java/LuceneImplementationsSolr é uma search engine “appliance”construida em cima de lucene que fornece serviços de indexação e searching por API HTTPNutch é um crawler/indexer/searcher webPosso acabar por ter de explicar as diferenças entre os doisPyLucene compila java para C e “wrappa” o código C para ser consumido por python
Queremos encontrar a resposta ao nosso pedido.Não sabemos se a resposta tem as palavras exactamente iguais ao pedido, podemos estar a procurar em imensos sitios, e quueremos ter uma ideia de quao relevante é uma reposta em relação ao que perguntamos
Procura directa nas entidades (iterarfunciona para numeros pequenos de entidades, e aplicações de desktop simplesLike é solução “directa”. Tem problemas de performance, não encontra palavras semelhantes, nem indica qual a semelhança entre o documento e a procuraFull Text Search funciona se tivermos SQL Server (admito que nunca experimentei)Lucene/Xapian é outra hipotese
Uma “arquitectura” de search com lucenetipicamente divide-se emduaspartes:IndexingSearching Entidadessão as nossas “entidades de negocio”. Podem ser posts,livros, documentos.IndexWriters and searchers sãõ thread e process-safe, num esquema de readers/writer.Indice é trancadoparaescrita. É preciso re-abrir um searcher paraobternovos items queentretantoforamescritos
Uma “arquitectura” de search com lucenetipicamente divide-se emduaspartes:IndexingSearching Entidadessão as nossas “entidades de negocio”. Podem ser posts,livros, documentos.IndexWriters and searchers sãõ thread e process-safe, num esquema de readers/writer.Indice é trancadoparaescrita. É preciso re-abrir um searcher paraobternovos items queentretantoforamescritos
Uma “arquitectura” de search com lucenetipicamente divide-se emduaspartes:IndexingSearching Entidadessão as nossas “entidades de negocio”. Podem ser posts,livros, documentos.IndexWriters and searchers sãõ thread e process-safe, num esquema de readers/writer.Indice é trancadoparaescrita. É preciso re-abrir um searcher paraobternovos items queentretantoforamescritos
Cria-se o indexwriter, queescrevepara um indicedocumentosquetêmcampos. Um campo tem nome, valor e opções. Depoisopçõesvemosna demo com maisdetalheAtenção, documentossaoimutaveis. Ouseja, paraalterar um documento é preciso remove-lo e voltar a adiciona-lo aoindiceUmaquestãointeressante tem a ver com o facto de que indices podem ser combinados …
Peloque se podeter indexers a correrememparalelo (emmáquinasdiferentes) e os indices seremposteriormentecombinados num sóqueseráusadoparaprocuras
Um query quevem doutilizador tem que ser analisado (divididoem tokens e stemmed, o mesmoquefoifeitoparaosdocumentos no indice)Oquesai de procurar no indicesao “search results”, queapenasapontamparadocumentos.Depoisparaobter o documentoemsi é precisopediraoindice (através do searcher) o documentoemsiDe repararque um documentonão é a “entidade” quequisemosguardar, massim a representaçãõque o lucene tem dela
Tanto no searcher como noindexeremhaviaumacaixachamada “analyzer”. Um analizadorinterpreta o texto e “extrai” tokensquesãoguardados no indice.Implementamtécnicas e algoritmos de linguisticaparamelhorar a qualidade dos resultados.Inclui-se informação de posição no textonos tokensStopwordssão “ruido” linguisticoquetipicametenãõinteressaguardar, como a, aos, dos, para, quando…Stemming é dependente de linguagem e consisteemreduzir as palavras a umapalavraraiz (de forma a encontrarcompilarquandoseprocuraporcompilação, e maisimportante, encontrarcodigosquando se procuraporcodigo [ser invariante com numero])Nestecasoparaexemplificarusei o BrazilianAnalyzer (com o luke, quefalo a seguir e mostrona demo)
Lucene.net - http://incubator.apache.org/lucene.net/Solr - http://lucene.apache.org/solr/Lucene - http://lucene.apache.org/Xapian - http://xapian.org/Mais implementaçoes em http://wiki.apache.org/lucene-java/LuceneImplementationsSolr é uma search engine “appliance”construida em cima de lucene que fornece serviços de indexação e searching por API HTTPNutch é um crawler/indexer/searcher webPosso acabar por ter de explicar as diferenças entre os doisPyLucene compila java para C e “wrappa” o código C para ser consumido por python