PDFBoxLuceneIndex.java
上传用户:cctqzzy
上传日期:2022-03-14
资源大小:12198k
文件大小:3k
源码类别:

搜索引擎

开发平台:

Java

  1. package chapter9;
  2. import java.io.FileInputStream;
  3. import java.io.IOException;
  4. import org.apache.lucene.analysis.Analyzer;
  5. import org.apache.lucene.analysis.SimpleAnalyzer;
  6. import org.apache.lucene.analysis.standard.*;
  7. import org.apache.lucene.document.Document;
  8. import org.apache.lucene.index.IndexWriter;
  9. import org.apache.lucene.index.Term;
  10. import org.apache.lucene.search.Hits;
  11. import org.apache.lucene.search.IndexSearcher;
  12. import org.apache.lucene.search.Query;
  13. import org.apache.lucene.search.TermQuery;
  14. import org.pdfbox.searchengine.lucene.LucenePDFDocument;
  15. public class PDFBoxLuceneIndex {
  16. private static String Dest_Index_Path = "D:\workshop\index";
  17. /*================================================================
  18.  * 名 称:PDFQueryIndex
  19.  * 功 能:构造PDF文档检索查询器,对指定的索引进行查询。
  20.  ===============================================================*/
  21. public static void PDFQueryIndex(){
  22. try {
  23. IndexSearcher searcher = new IndexSearcher(Dest_Index_Path); // 生成检索器对象
  24. Term term = new Term("contents","pdf");                      // 检索关键字
  25. Query query = new TermQuery(term);                           // 生成检索对象
  26. System.out.println("----------检索内容:"+query.toString()+"----------");
  27. Hits hits = searcher.search(query);                          // 提交检索
  28. System.out.println("----------检索结果: 共检索到 "+hits.length()+" 条 ----------");
  29. for(int i=0; i < hits.length(); i++)                         // 获得结果
  30. {
  31. System.out.println(hits.doc(i));
  32. System.out.println(hits.doc(i).getField("id"));
  33. }
  34. }catch (IOException e) {
  35. e.printStackTrace();
  36. }
  37. System.out.println("----------索引检索:PDF索引查询成功----------");
  38. }
  39. /*================================================================
  40.  * 名 称:PDFIndexBuilder
  41.  * 功 能:构造PDF磁盘索引,添加内容到指定目录,为后续检索查询做好准备。
  42.  ===============================================================*/
  43. public static void PDFIndexBuilder(){
  44. try {
  45. //Analyzer TextAnalyzer = new SimpleAnalyzer();                   // 生成分析器
  46. Analyzer TextAnalyzer = new StandardAnalyzer();                   // 生成分析器
  47. IndexWriter TextIndex = new IndexWriter(Dest_Index_Path,TextAnalyzer,true);      // 生成索引器
  48.         TextIndex.setUseCompoundFile(true);
  49. FileInputStream instream = new FileInputStream("D:\workshop\docs\index.pdf"); // 根据指定文件创建输入流
  50. Document document = LucenePDFDocument.getDocument( instream ) ; // 由PDF文件生成文档对象
  51. System.out.println("----------创建索引:PDF 文件内容  ----------");
  52. System.out.println(document);
  53. TextIndex.addDocument(document);                                // 添加文档到索引
  54. TextIndex.optimize();
  55. TextIndex.close();                                              // 索引完毕
  56. }catch (IOException e) {
  57. e.printStackTrace();
  58. }
  59. System.out.println("----------创建索引:PDF 文件成功. ----------");
  60. }
  61. /*================================================================
  62.  * 名 称:main
  63.  * 功 能:测试Lucene中PDF文件的索引建立和检索查询功能。
  64.  ===============================================================*/
  65. public static void main(String[] args) {
  66. PDFIndexBuilder();    // 创建索引
  67. PDFQueryIndex();      // 检索关键字 
  68. System.out.println("----------PDF Lucene 检索测试 ----------");
  69. }
  70. }