5.2修改索引部分
对于本次的文献检索部分,只需要继承一个索引部分的类就可以了,具体代
码如下(这里只贴出最关键的两端代码,中间还省略了一些代码),其中黄色背景的是需要我们修改的部分。 void main(){ Analyzer* analyzer = new NaiveAnalyzer(); compressorFactory = new PForDeltaCompressorFactory(); IndexWriter * writer = new IndexWriter(fsdir, analyzer, compressorFactory); writer->setMergeThreshold(mergesize); PDFParser parser; if (begin != 0) { while (begin > 0) { parser.hasNext(); begin--;}} int doc_id = 1; Timer t; while (parser.hasNext()) { shared_ptr
(1) 重写一个Parser类,这里的名称为PDFParser,这个parser需要有
hasNext,getContent这两个函数即可。 (2) 重写一个Content类,里面存有所需要建立索引的document的内容,由上面的getContent类返回。
(3) 重写addDocument函数,如下,其中关键部分用黄色背景标注。 int addDocument(shared_ptr
paradise::index::document::Document document; shared_ptr
PARADISE系统的设置是,在我们开启一个搜索服务时,一个请求发向服务器端之后,服务器端会将搜索到得结果的url列表返回给前端,这个url列表必须是来自上面的Url域。因为PARADISE主要是针对网页搜索的,所以称这个域为Url,实际上应该叫DocumentID更确切一点。
5.3修改前台部分
PARADISE的前台部分也设计的很好,特别是摘要算法已经完成测试。因此对于前台部分,只需要修改一点,就是提供一个候选摘要的数据库。我们知道,不可能对整篇文章进行摘要算法,那样会耗费大量的时间,最终会导致前端所耗费的时间比后端检索所花费的时间还多,这显然是用户无法接受的。因此,前台部分唯一需要修改的部分,就是给定一个ID号,获得它的摘要。这里,我们利用了前面获得的metadata.dpt文件,里面存有一篇论文的摘要,获得摘要段落之后,对其利用摘要算法,可以获取较好的效果。
18
另外,我们这个系统不是简单的一个论文检索系统,检索只是方便使用的工具,更重要的,它是一个知识提取系统,因此,还需要自己编写一些界面用来显示知识,这些就不再赘述。
5.4系统示意图 5.4.1主界面
19
5.4.2搜索结果界面
20
5.4.3评论界面
21