将“contents”字段更改为存储,标记化,索引以突出显示

时间:2017-10-16 21:35:35

标签: lucene pdfbox

这是我从LucenePDFDocument获取详细信息的方式:

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

这是输出:

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:java.io.StringReader@4206a205>,
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 ...>]

我想在“内容”字段中突出显示检索到的单词。突出显示需要存储的字段,但“内容”字段只是索引和标记化。我得到一个错误:“内容字段未存储”。

我应该怎么做才能使“内容”字段存储,标记化和编入索引?  应该编辑LucenePDFDocument.java?哪个部分?

1 个答案:

答案 0 :(得分:2)

是的,内容字段已编入索引但未存储,这意味着它不会从搜索结果返回,但可以搜索,是的,这不会与荧光笔一起使用。

您需要修改LucenePDFDocument类以存储该字段。要做到这一点,只需将字符串而不是阅读器传递给addTextField调用:

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

你也应该删除&#34;摘要&#34;字段,因为如果您要存储完整内容,则不会需要它。