农业垂直搜索引擎六》搜索与更新模块的设计与实现
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中对应记录的状态或操作值。
相关文章推荐
- SVM再次总结 - 5 - SMO
- Java反射小结
- 错误总结
- APK 破解
- 几个有关图的常用术语
- python pexpect
- Can't use Subversion command line client: svn.Errors found while svn working copies detection.
- CABasicAnimation 使用
- 171. Excel Sheet Column Number
- oracle常用命令
- 5年了,CSDN博客终于变啦
- Android开发技术周报 Issue#37
- 开源协议
- 优化布局-----ViewStub的应用
- 使用汇编语言编程常见错误与技巧
- Linux 命令行搭建Java环境
- BaseDao的抽取
- gcc使用和简要makefile
- 关于算法的一点思考。。。
- SVM再次总结 - 4 - 非线性支持向量机