2017-10-16 40 views
1

Voici comment je reçois les détails d'un LucenePDFDocument:changement « contenu » à stocké, sous forme de jeton, indexé pour point culminant

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

Et c'est la sortie:

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 ...>] 

Je veux souligner le mot récupéré dans le champ "contenu". Highlight veut un champ stocké pour cela, mais le champ "contents" est simplement indexé et tokenized. Je reçois une erreur comme: "le contenu du champ n'est pas stocké".

Ce que je dois faire pour rendre le champ « contenu » stocké, tokenisé et indexé? Doit-on éditer LucenePDFDocument.java? Quelle partie?

Répondre

2

Oui, est indexé le champ de contenu mais pas stocké, ce qui signifie qu'il ne sera pas retourné des résultats de recherche, mais sera consultable, et oui, cela ne fonctionnera pas avec un surligneur.

Vous devez modifier la classe LucenePDFDocument pour faire ce champ stocké. Pour ce faire, il suffit de passer une chaîne, au lieu d'un lecteur, à l'appel addTextField:

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

Vous devez également supprimer probablement le champ « sommaire », puisque vous ne serez pas en avoir besoin si vous êtes stocker le contenu complet.

+0

Merci beaucoup. Maintenant, je vois que juste passer une chaîne va rendre Field.Store.YES afin que je puisse mettre en évidence le mot-clé de match – ridhopratama