这是一个简易的搜索引擎。该设计是针对PDF文档的搜索。用户提供关键词,搜索引擎返回搜索结果到用户界面,用户通过返回的超链接可查看文档的详细内容。
设计概述
首先,通过BuildIndex创建文档的索引。然后,将关键词作为Search的参数,返回查询结构,文档内容高亮显示。
jar包
创建索引(BuildIndex.java)
创建索引的过程就是将每个文档转化成Document对象,然后调用IndexWriter的addDocument方法将Document对象添加到索引中。
1 | public static void run(String sdir, String indexPath) throws Exception{ |
提取PDF文档内容(ReadPDF.java)
使用PDF-Box所提供的库从PDF文档中提取内容。
PDFbox是一个开源的、基于Java的、支持PDF文档生成的工具库,它可以用于创建新的PDF文档,修改现有的PDF文档,还可以从PDF文档中提取所需的内容。
1 | public static String readPdf(String path) throws Exception { |
关键词查询(Search.java)
建立好索引后,就可以利用索引进行关键词查询。创建分析器Analyze,采用QueryParser实现模糊查询。
1 | public static ArrayList<String> run(String indexPath, String queryVal) throws Exception { |
高亮显示(Highlighter.java)
高亮显示技术,是搜索引擎常用到的一项重要技术。在搜索引擎开发中引入高亮显示技术,使搜索结果一目了然。
在Lucene5.X的Highlighter包中提供了一个简单的Highlighter功能,PostingsHighlighter。实现步骤为,创建PostingsHighlighter对象,创建对象查询结果,获取查询结果,获取该查询结果所对应的高亮snippets。
1 | public static String[] run(String indexPath, String queryVal) throws Exception{ |
用户界面
用户界面采用B/S架构(浏览器/服务器模式)实现。服务器端使用Java Servlet技术完成,用户通过浏览器输入待查询关键词,服务器端返回搜索到的相关文档,客户端显示响应的查询结果的路径超链接,以及发现关键词的部分段落。点击超链接查看文档的详细内容。
用户主界面(index.jsp)
Index.jsp提供了一个查询初始界面,它接受用户所要查询的的关键词,并将这个词传给Result Servlet做下一步处理。
1 | <body> |
查询结果(Result.java)
Result Servlet 使用request.getParameter(“q”);获取用户查询的关键词,将关键词作为参数送给Highlighter和Search并获取返回的相应结果集。使用一个循环将获取的信息返回给用户。
1 | protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { |
文档内容显示(Document.java)
Document Servlet通过request.getParameter(“path”)获取Result Servlet提供的文档路径。创建Document对象,采用PDFTextStripper读取文档内容,PDDocumentInformation获取文档信息,如标题。按顺序输出文档内容。
1 | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { |