您的位置:首页 > 其它

农业垂直搜索引擎六》搜索与更新模块的设计与实现

2016-07-19 14:37 393 查看

4.4 搜索与更新模块的设计与实现

4.4.1搜索与更新模块的总设计

搜索与更新模块主要是分别对Solr和Luecne的查询模块进行封装。封装的内容包括:

(1) 通用的查询过程;

(2) 把参数封装为类;

(3) 把返回结果封装成类;

(4)工厂模式启动服务。

 


 

图4-16  搜索与更新模块总设计

 

如上图,该模块涉及到的系统有:Solr/Lucene索引与搜索服务系统,搜索与更新模块系统,业务系统。其中搜索与更新模块系统的核心是Solr/Lucene的源码以及提供对外的搜索与索引接口。业务系统是指针对每次垂直搜索的特定内容而设置的系统,例如:在农业搜索中分为粮食油料,花卉,木材森林,海鲜鱼类等,每一类都可以作为一个业务系统独立出来,每一类都有自己独立的业务逻辑以及库表。搜索与更新模块负责两个功能:调用远程搜索接口与索引接口;做一些每次调用索引接口前后与业务表的关联,可以这么认为:搜索与更新模块作为Solr/Lucene服务器和业务系统数据交换的交接点而存在。

 

4.4.2搜索与更新模块之搜索服务

如图4-17所示,首先这个框架是针对接口编程的,我们先定义一个serverFactory让它可以创建所有实现接口的fulltextservice的类。毫无疑问地,LunceneService和solrService是最终子类封装了通用的index和query方法,他们可以通过fulltextindexParam和fullTextSearchParam获取需要的参数。

 

 


图4-17  搜索与更新模块之搜索服务设计

 

总的来说,业务系统A,B,C想要搜索某些关键字的时候,先利用FullTextServiceFactory来创建FullTextServiceImpl,然后再把传递过来的参数封装在FullTextSearchParam,最后FullTextServiceImpl会调用远程接口并接收返回结果。

4.4.3搜索与更新模块之数据更新服务

搜索与更新模块主要是分别对Solr和Luecne的查询模块进行封装。封装的内容包括:

(1) 通用的查询过程;

(2) 把参数封装为类;

(3) 把返回结果封装成类;

(4) 工厂模式启动服务。

 


 

图4-18  搜索与更新模块之数据更新服务设计

 

如上图所示,更新服务负责在调用远程接口时的前后操作。更新服务定期检查待索引文件路径,如果发现该路径有文件,那么执行索引前的操作,然后调用远程接口进行索引,最后执行索引后的操作。

其中索引前的操作是:首先检查数据库索引t_index表中“action”字段是否有需要update操作的数据,如果有那么先把“action”字段的值更改为“del”,“state”字段的值更改为“0”;然后检查数据库表中是否有需要del的字段,如果有,调用远程接口删除Solr/Lucene索引库的记录并更改对应记录“state”值为“1”代表该条记录已经操作。

索引后的操作是:更改业务表t_index中对应记录的状态或操作值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: