优化PDF Word搜索



我有一个应用程序,它遍历pdf文件目录并搜索字符串。我使用PDFBox从PDF中提取文本,代码非常简单。一开始搜索13个文件,它花了一分半钟来加载结果,但我注意到PDFBox在日志文件文件中放入了很多东西。我更改了日志级别,这很有帮助,但加载页面仍然需要30多秒。有人对我如何优化代码或确定文档中有多少点击有任何建议吗?我用Lucene玩了一下,但它似乎只给你一个目录中的点击数,而不是一个特定文件中的点击数。

这是我的代码,以获得文本的PDF。

public static String parsePDF (String filename) throws IOException 
 {
    FileInputStream fi = new FileInputStream(new File(filename));       
    PDFParser parser = new PDFParser(fi);   
    parser.parse();   
    COSDocument cd = parser.getDocument();   
    PDFTextStripper stripper = new PDFTextStripper();   
    String pdfText = stripper.getText(new PDDocument(cd));  
    cd.close();
    return pdfText;
 }

Lucene将允许您单独索引每个文档。
而不是直接使用PDFBox。您可以使用Apache Tika提取文本并将其提供给lucene。Tika在内部使用PDFBox。然而,它提供了易于使用的api以及无缝地从任何类型的文档中提取内容的能力。一旦你有了目录中每个文件的lucene文档,你就可以对完整的索引执行搜索。
Lucene匹配搜索词,并返回与文档内容匹配的结果(文件)的数量。
也可以使用lucene api在每个lucene文档/文件中获得命中。这被称为术语频率,可以根据被搜索的文档和字段来计算。

在一个Lucene/Lucene.net搜索的例子,我如何计算每个文档的点击数?
List docIds = // doc ids for documents that matched the query, 
              // sorted in ascending order 
int totalFreq = 0;
TermDocs termDocs = reader.termDocs();
termDocs.seek(new Term("my_field", "congress"));
for (int id : docIds) {
    termDocs.skipTo(id);
    totalFreq += termDocs.freq();
}

最新更新