2017-10-16 2 views
1

Dies ist, wie ich Details aus einem LucenePDFDocument:change "contents" Feld gespeichert, Token versehen, indiziert für Highlight

doc = LucenePDFDocument.getDocument(file); 
System.out.println("field list: \n" + doc.getFields()); 

Und dies ist die Ausgabe:

field list: 
[<stored<path:D:\Kuliah\rancangan document indexing\dir-pdf\dua.pdf>, 
stored<url:D:/Kuliah/rancangan document indexing/dir-pdf/dua.pdf>, 
stored,indexed,omitNorms,indexOptions=DOCS<modified:20170307220729>, 
indexed,tokenized<uid:D Kuliah rancangan document indexing dir-pdf dua.pdf 20170307220729>, 
indexed,tokenized<contents:[email protected]>, 
stored,indexed,tokenized<Author:Acer-2577>, 
stored,indexed,tokenized<CreationDate:20150222074338>, 
stored,indexed,tokenized<Creator:PDF24 Creator>, 
stored,indexed,tokenized<ModificationDate:20150222074338>, 
stored,indexed,tokenized<Producer:GPL Ghostscript 9.10>, 
stored,indexed,tokenized<Title:Microsoft Word - Vol 10.1 bag ke 2a fix.doc>, 
stored<summary:Jurnal Teknologi Informasi, Volume 10 Nomor 1, April ...>] 

Ich möchte hervorheben das abgerufene Wort im Feld "contents". Highlight möchte ein gespeichertes Feld dafür, aber das Feld "contents" wird nur indiziert und in Token umgewandelt. Ich erhalte einen Fehler wie: "Inhaltsfeld wird nicht gespeichert".

Was soll ich tun, um das Feld "contents" zu speichern, zu tokenisieren und indizieren? Sollte LucenePDFDocument.java bearbeiten? Welcher Teil?

Antwort

2

Ja, das Inhaltsfeld ist indiziert, aber nicht gespeichert, was bedeutet, dass es nicht von den Suchergebnissen zurückgegeben wird, aber durchsuchbar sein wird, und ja, dies wird nicht mit einem Textmarker funktionieren.

Sie müssten die LucenePDFDocument-Klasse ändern, damit dieses Feld gespeichert wird. Um dies zu tun, geben Sie einfach einen String, anstelle eines Lesers, zum addTextField Aufruf:

String contents = writer.getBuffer().toString(); 
addTextField(document, "contents", contents); 

Sie sollten auch wahrscheinlich entfernen Sie die „Zusammenfassung“ Feld, da Sie nicht mehr brauchen, wenn Sie Speichern des gesamten Inhalts

+0

Vielen Dank. Jetzt sehe ich, dass nur eine Zeichenfolge übergeben wird Field.Store.YES, damit ich das Keyword Übereinstimmung markieren kann – ridhopratama

Verwandte Themen