Java 优化PDF单词搜索

Java 优化PDF单词搜索,java,pdf,lucene,Java,Pdf,Lucene,我有一个应用程序,它可以遍历pdf文件目录并搜索字符串。我使用PDFBox从PDF中提取文本,代码非常简单。起初搜索13个文件需要一分半钟才能加载结果,但我注意到PDFBox在日志文件中放了很多东西。我更改了日志记录级别,这很有帮助,但加载一个页面仍然需要30秒以上的时间。有人对我如何优化代码或以其他方式确定文档中的点击量有什么建议吗?我和Lucene一起玩过,但它似乎只提供目录中的点击数,而不是特定文件中的点击数 这是我从PDF中获取文本的代码 public static String par

我有一个应用程序,它可以遍历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。您可以使用提取文本并将其提供给lucene。Tika在内部使用PDFBox。但是,它提供了易于使用的api以及从文档中无缝提取内容的能力。
一旦目录中的每个文件都有了每个lucene文档,就可以对完整索引执行搜索。
Lucene匹配搜索词并返回与文档内容匹配的结果(文件)数量。
还可以使用lucene api获取每个lucene文档/文件中的点击率。 这称为术语频率,可以针对正在搜索的文档和字段进行计算

来自


哦,我不知道这是可以选择的。我来看看。看来我又回到原点了。Lucene家族似乎无法直接为PDF编制索引,需要先提取文本。他们列出了一些提取文本的选项,但其中一个是我已经在使用的PDFBox。我不明白为什么这么慢。我得到的应用程序与蒂卡工作与剃须只有2秒!
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();
}