Hvordan indekser Søk en PDF-fil i Java med Lucene

Hvordan indekser Søk en PDF-fil i Java med Lucene


Apache Lucene er en fullverdig tekst søkemotor bibliotek skrevet i Java. Du kan bruke Lucene å indeksere og søke noen form for tekstdokument. For å konvertere en Portable Document Format (PDF) fil i et tekstformat som Lucene kan indeksen, kan du bruke PDFBox åpen kildekode klasse som har spesielle metoder spesielt for Lucene. Bare gi PDF-filen navn til PDFBox og få en Lucene Dokumentobjekt som kan legges til i indeksen og søkte akkurat som en hvilken som helst tekstfil.

Bruksanvisning

1 Velg en Lucene analysator å bruke i indeksen, for eksempel "StandardAnalyzer." Lag en "IndexWriter" objekt å håndtere legge til nye elementer til indeksen, for eksempel:

IndexWriter myWriter = ny IndexWriter ( "indeks", ny StandardAnalyzer (), true);

2 Ring "LucenePDFDocument" for å få en Lucene Dokumentobjekt i PDF-filen. Legg til andre viktige felt til objektet og legge objektet til Lucene indeksen. For eksempel:

Dokument pdfdoc = LucenePDFDocument.getDoument (filnavn);

pdfDoc.add (ny Field ( "title", pdf.getTitle (), Field.Store.YES, Field.Index.TOKENIZED));

pdfDoc.add (ny Field ( "forfatter", pdf.getAuthor (), Field.Store.YES, Field.Index.TOKENIZED));

myWriter.addDocument (pdfdoc);

3 Bruk "Search" class å søke i Lucene indeksen. "Search" returnerer en Lucene "Treff" objekt med en liste over "hit" stedene. For eksempel:

Search Mysearch = new Search ();

Hits myHits = mySearch.performSearch (SEARCH);

System.out.println ( "Dokumenter matchet:" + myHits.length ());

4 Gjenta for "hit" objekter for å få mer informasjon om hver kamp. "Hit" objekter er sortert etter relevans til søket, og du kan også få den relative søk stillingen "getScore ()." For eksempel:

Iterator <Hit> ITR = myHits.iterator ();

while (itr.hasNext ()) {

Hit theHit = itr.next ();

Dokument theDoc = theHit.getDocument ();

System.out.println (theDoc.get ( "title") + "-" + theHit.getScore ());

}