Como indexar e buscar em um PDF em Java com o Lucene

Escrito por steve mcdonnell Google | Traduzido por josé fabián
  • Compartilhar
  • Tweetar
  • Compartilhar
  • Pin
  • E-mail
Como indexar e buscar em um PDF em Java com o Lucene
Crie índices e busque em arquivos PDF no Java usando a biblioteca Lucene (magnifier image by dinostock from Fotolia.com)

O Apache Lucene é um motor de busca de texto completo escrito como uma biblioteca do Java. Você pode usá-lo para indexar e buscar em qualquer classe de documento de texto. Para converter um arquivo em formato PDF para um formato de texto que o Lucene possa indexar, você pode usar a classe de código aberto "PDFBox", a qual possui métodos especiais específicos para o Lucene. Forneça o nome do arquivo PDF no PDFBox e você obterá um documento do Lucene que poderá ser adicionado ao índice e buscado como qualquer arquivo de texto.

Nível de dificuldade:
Moderadamente desafiante

Outras pessoas estão lendo

Instruções

  1. 1

    Selecione um analisador do Lucene para usar na criação do índice, como, por exemplo, "StandardAnalyzer". Crie um objeto "IndexWriter" para adicionar novos elementos ao índice. Por exemplo:

    IndexWriter myWriter = new IndexWriter("index", new StandardAnalyzer(), true);

  2. 2

    Chame o "LucenePDFDocument" para obter um objeto "Lucene Document" a partir do seu arquivo PDF. Adicione outros campos-chave ao objeto e adicione o resultado ao índice do Lucene. Por exemplo:

    Document pdfDoc = LucenePDFDocument.getDoument(filename); pdfDoc.add(new Field("title", pdf.getTitle(), Field.Store.YES, Field.Index.TOKENIZED)); pdfDoc.add(new Field("author", pdf.getAuthor(), Field.Store.YES, Field.Index.TOKENIZED)); myWriter.addDocument(pdfDoc);

  3. 3

    Use a classe "SearchEngine" para buscar no índice do Lucene. Essa classe retorna um objeto "Hits" (Coincidências) do Lucene com uma lista de objetos "Hit". Por exemplo:

    SearchEngine mySearch = new SearchEngine(); Hits myHits = mySearch.performSearch(searchText); System.out.println("Documents matched: " + myHits.length());

  4. 4

    Percorra a lista de objetos "Hit" para obter mais informações sobre cada coincidência. Os objetos estão ordenados por relevância e é possível obter a pontuação de busca com "getScore()". Por exemplo:

    Iterator<Hit> itr = myHits.iterator(); while (itr.hasNext()) { Hit theHit = itr.next(); Document theDoc = theHit.getDocument(); System.out.println(theDoc.get("title") + " - " + theHit.getScore()); }

Não perca

Filtro:
  • Geral
  • Artigos
  • Slides
  • Vídeos
Mostrar:
  • Mais relevantes
  • Mais lidos
  • Mais recentes

Nenhum artigo disponível

Nenhum slide disponível

Nenhum vídeo disponível