搜索框架与业务的整合
0. 前提
1) tomcat启动自动索引运行
例子:
AutoRun.java
import java.util.Timer;
import java.util.TimerTask;
importjavax.servlet.ServletContextEvent;
importjavax.servlet.ServletContextListener;
public class AutoRun implementsServletContextListener{
public voidcontextDestroyed(ServletContextEvent sce) {
System.out.println("servlet isdestroying!");
}
public voidcontextInitialized(ServletContextEvent sce) {
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("servlet isstarting!");
}
};
Timer timer = new Timer();
timer.schedule(task, 0, 200);
}
}
Web.xml
<listener>
<listener-class>XXX.XXX.AutoRun</listener-class>
</listener>
1. 原理设计
已有原业务数据库A,新建一个B索引数据库,每次A数据库有新数据加入,数据B数据库新增对应的记录并记录状态,定时器定时对B数据库扫描并索引数据。
T_index:
T_user:
其中每当t_user增加一条记录,那么t_index就会相应地更新一条。T_index中,businessId是业务ID,Type是指哪张表,Action是指什么操作,flag是指是否已更新,indexDate索引更新日期。
2. 实现
0) 概述:
1)IndexCommonServiceextends solrService
主要实现的功能是:继承之前封装的solrService然后实现索引表和业务表之间的一些关联。例如获取索引表某些状态的索引ID,业务ID;根据业务ID获取业务表的数据。
2) IndexService.Java extend IndexCommonService
主要是实现与数据业务表的联动,以及之前封装框架留下来的afterIndexMethod(),beforeIndexMethod()。