Project2--配置Lucene, 对ccer数据建立索引和查询系统

来源:互联网 发布:华为打开数据连接不了 编辑:程序博客网 时间:2024/05/17 10:54

Step 1  读取文件夹下的所有文件

 

使用递归的方法读取所有文件名,将其保存在一个String中,以“/”将文件名隔开,之后便可以使用使用

String []list=s.split("/");得到文件名列表

 

由于是对文本建立索引,所以目前只需要网页文件,在遍历过程中对所有的文件做了一下判断,只取shtml、html、asp、php、htm等后缀的文件。

 

Step 2  建立索引

通过CCER抓取到的数据存放的位置建立一个File,然后为其下面的所有网页文件建立索引

writer = new IndexWriter(FSDirectory.open(new File(indexPath)),
     analyzer, true, IndexWriter.MaxFieldLength.LIMITED);

分别为网页文件名、标题和正文建立了索引

Field field=new Field("name", list[i], Store.YES, Field.Index.NOT_ANALYZED); doc.add(field); String title=pp.getTitle field=new Field("title", title, Store.YES, Field.Index.ANALYZED); doc.add(field); String content=pp.getBody field=new Field("content",content,Store.YES,Field.Index.ANALYZED); doc.add(field);

其中对于网页正文内容的读取使用HTMLParser和正则表达式。利用HTMLParser读取网页中title和body节点,然后利用正则表达式去掉body中诸如div或者script的节点,得到正文。

下图为索引建立过程:

CreateIndex

step 3  搜索

利用search(searchField, searchWord);进行搜索,

利用TopDocs td=searcher.search(query, 1000);
   int totalHits=td.totalHits;

返回搜索结果即可。

 下图是输入搜索词为“海闻”所得到的结果,由于匹配结果过多,所以只显示了前1000个

Search

原创粉丝点击