8.0之前版本详解编辑
注:以V7.1为例书写,各版本稍有差异,大致逻辑相同。
检索基本代码编辑
控制器:
ctp-index\src\main\java\com\seeyon\apps\index\controller\ IndexController.java // 全文检索控制器,主要提供保存更新全文检索配置、页面检索功能。
主要方法:
public ModelAndView showIndexConfig(HttpServletRequest request, HttpServletResponse response) // 显示全文检索配置信息
public ModelAndView updateIndexConfig(HttpServletRequest request, HttpServletResponse response) // 更新全文检索配置
public ModelAndView search(HttpServletRequest request, HttpServletResponse response) // 进入检索查询页面
public ModelAndView searchAll(HttpServletRequest request, HttpServletResponse response)// 检索数据核心方法
Rest接口:
ctp-index\src\main\java\com\seeyon\ctp\rest\resources\ IndexResources.java // 为m3提供全文检索接口
主要方法:
public Response search(@PathParam("pageSize") String pageSize, @PathParam("pageNo") String pageNo,Map<String, String> params); // 检索数据
public Response hotKeys() // 搜索热词
public Response searchHis(@PathParam("memberId") String memberId) // 个人搜索历史
BO:
ctp-index-api\src\main\java\com\seeyon\apps\index\bo\ Accessory.java // 附件信息
ctp-index-api\src\main\java\com\seeyon\apps\index\bo\ AuthorizationInfo.java // 权限信息
ctp-index-api\src\main\java\com\seeyon\apps\index\bo\ IndexInfo.java // 索引信息,此类包含Accessory、AuthorizationInfo属性
Manager:
ctp-index\src\main\java\com\seeyon\apps\index\manager\ ProxyManagerImpl.java // 全文检索代理类。实时创建索引、重建索引都会使用此类
主要方法:
public void add(Long entityId, Integer appType)
public void add(IndexInfo indexInfo)
public void update(Long entityId, Integer appType)
public void update(IndexInfo indexInfo)
public void delete(Long entityId, Integer appType)
public void index(IndexInfo indexInfo)
public void deleteFromIndex(Long entityId, Integer appType)
ctp-index\src\main\java\com\seeyon\apps\index\manager\ IndexManagerImpl.java // 真实的实现类,主要方法和代理类基本一致。代理类中的方法会调用此实现类中的方法
ctp-index\src\main\java\com\seeyon\apps\index\job\ IndexLuceneInit.java // 初始化索引功能
ctp-index\src\main\java\com\seeyon\apps\index\job\ IndexRemoteLuceneInit.java // 初始化远程模式索引功能
各应用对索引执行CRUD相关代码编辑
全文检索接口:
ctp-index-api\src\main\java\com\seeyon\apps\index\api\ IndexApi.java // 为各应用提供索引的CRUD功能,各应用中调用此接口,实现索引的CRUD
ctp-index\src\main\java\com\seeyon\apps\index\api\ IndexApiImpl.java // 实现类
主要方法:
// 提供三个重载的增加索引方法
public void add(Long entityId, Integer appType)
public void add(List entityIds, Integer appType)
public void add(IndexInfo indexInfo)
// 提供两个重载的更新索引方法
public void update(Long entityId, Integer appType)
public void update(List entityIds, Integer appType)
// 提供两个重载的删除索引方法
public void delete(Long entityId, Integer appType)
public void delete(List entityIds, Integer appType)
重建索引相关代码编辑
重建索引流程图:

控制器:
ctp-index\src\main\java\com\seeyon\apps\indexResume\controller\ IndexResumeController.java // 重建索引控制器
主要方法:
public ModelAndView showSettingPage(HttpServletRequest request, HttpServletResponse response) // 显示重建索引配置
public ModelAndView saveConfig(HttpServletRequest request, HttpServletResponse response) // 保存重建索引配置
Manager:
ctp-index\src\main\java\com\seeyon\apps\indexResume\manager\ IndexResumeTaskJob.java // 启动重建索引定时任务
ctp-index\src\main\java\com\seeyon\apps\indexResume\manager\ IndexResumeStopTaskJob.java // 停止重建索引定时任务
ctp-index\src\main\java\com\seeyon\apps\indexResume\manager\ IndexResumeManagerImp.java // 定时任务调用此manager执行重建索引
主要方法:
public void resumeStart(IndexResumeInfo info)
private void resume(int appType, String start, String end)
private void resume(int appType, List ids)
消费索引队列数据相关manager:
ctp-index\src\main\java\com\seeyon\apps\index\job\ IndexDBJob.java // 加载数据库表中的索引信息,6.X版本之后已经弃用
ctp-index\src\main\java\com\seeyon\apps\index\job\ IndexIdConsumerTask.java
ctp-index\src\main\java\com\seeyon\apps\index\job\ IndexIdJob.java
ctp-index\src\main\java\com\seeyon\apps\index\job\ IndexParseConsumerTask.java
ctp-index\src\main\java\com\seeyon\apps\index\job\ IndexParseJob.java
ctp-index\src\main\java\com\seeyon\apps\index\job\ IndexToFileJob.java // 将索引信息入库
重建索引接口:
ctp-index-api\src\main\java\com\seeyon\apps\index\manager\ IndexEnable.java // 全文检索的超类接口,由各应用实现,设置各应用自身的类别及获取索引信息的方法,重建索引使用
此接口目前有以下实现类:
1 协同--> com.seeyon.apps.collaboration.manager.ColIndexEnableImpl@73796a0
col_summary createDate // 重建索引时,某条数据是否在重建时间范围内是查的此表的此字段的日期,基它模块也类似。
select * from col_summary c where c.create_date >= to_date('2020-08-27 00:00:00','yyyy-mm-dd hh24:mi:ss') and c.create_date <= to_date('2020-08-30 23:59:59','yyyy-mm-dd hh24:mi:ss') and c.body_type!=20;
2 -->表单 com.seeyon.ctp.form.modules.index.FormIndex4Form@9f07836
SELECT * from ctp_content_all cca -- where cca.CREATE_DATE
3 文档--> com.seeyon.apps.doc.manager.DocIndexEnableImpl@dcffdd0
4 公文--> com.seeyon.apps.govdoc.manager.external.GovdocIndexEnableImpl@48cd720d
或
公文--> com.seeyon.apps.govdoc.manager.external.EdocIndexEnableImpl
5 计划--> com.seeyon.apps.plan.manager.PlanManagerImpl@73746f22
6 会议--> com.seeyon.apps.meeting.outer.MeetingIndexImpl@79cf98b2
meeting createDate
select * from oa.meeting m where m.create_date >= to_date('2020-08-27 00:00:00','yyyy-mm-dd hh24:mi:ss') and m.create_date <= to_date('2020-08-30 23:59:59','yyyy-mm-dd hh24:mi:ss');
7 公告--> com.seeyon.v3x.bulletin.index.BulIndexEnableImpl@b9cdb26
SELECT * from bul_data bd -- PUBLISH_DATE
8 新闻--> com.seeyon.v3x.news.index.NewsIndexEnableImpl@783fea03
9 讨论--> com.seeyon.v3x.bbs.index.BbsIndexImpl@7db0e7be
10 调查--> com.seeyon.v3x.inquiry.index.InquiryIndexEnableImpl@109856c5
11 事件--> com.seeyon.apps.calendar.manager.CalEventManagerImpl@2cac5109
30 任务--> com.seeyon.apps.taskmanage.manager.TaskInfoManagerImpl@2b44c96d
39 第三方待办--> com.seeyon.apps.cip.messageandpending.index.ThirdPendingIndexImpl@28e28d42