zoukankan      html  css  js  c++  java
  • 企业搜索解决方案流程

    针对与企业级的搜索数据索引准备方案纪录

    1. 首先明确需要搜索的数据范围

    2. 针对这些基础数据创建对应的索引库,用来存储需要索引的数据

    那么针对这么核心的亮点举例我个人的实际操作经验,之前做的是类似于企业文档的搜索解决方案,针对与各种不同种类的技术文档索引到Autonomy,然后通过前台的平台服务调用Autonomy提供的Restful接口获取数据;

    数据准备步骤:

    1.先准备需要的数据库表准备记录需要索引的数据

    业务表:

    Node 文档业务表

    增量表:

    Index_CM_Inc 普通文档增量表  描述:用来存储需要增加,删除,修改的数据,通过触发器监控主业务表Node,把对应的操作记录到此增量表

    Index_KN_Inc 知识库文档增量表 描述:同上,只是区分开了类别,因为根据分类存储到不同的索引库

    索引表:

    Index_CM 普通文档索引表 描述:Autonomy的爬虫根据此表的内容记录去爬取文档索引到Autonomy的文档库中;

    Index_KN 知识库文档索引表 描述:同上

    索引状态表:

    Index_CM_Status 普通文档索引状态表 描述:Autonomy爬虫完成之后,需要检查对应的文档数据是否爬成功,是否索引成功

    Index_KN_Status 知识库文档索引状态表 描述:同上

    2.数据准备流程以及处理流程

    2.1 首先准备增量表的数据 

          针对业务表的Node创建对应的触发器,增加,删除修改;把这些监控到的数据有变化的数据存储到对应类型的增量表;(也可以不使用触发器,但是得在程序里面控制插入到对应的增量表,这个每种方式都有各自的优缺点,自己体会去吧。)

    2.2 增量表的数据同步到索引表(此表数据存储所有需要索引的字段数据,以及文件的位置等等,也就是说你需要索引到索引库去的所有内容字段)

          通过定时任务调用对应的存储过程计算所需要的字段同步到对应的索引表,之前我们项目设定的时间一般都是在凌晨12点同步数据;在同步的过程当中首先要清理掉前一天的数据,防止重爬;另外还需要从索引状态表中获取失败的数据同步到索引表,再次索引(缺点:策略是只处理当天的数据,也就是说发布的文档不会及时生效)

    2.3 启动爬虫 (也是定时任务启动)

         设定不同文档分类处理对应的索引表,爬取字段以及实体文件等。

    2.4 爬虫结束后,需要启动检查任务

          根据不同种类的索引表检查当天索引的数据是否索引成功,成功以及未成功的都需要表示出状态,因为第二天再次索引的时候需要重新索引失败的数据;那么如何检查呢,就是根据文档的ID调用Autonomy的索引库进行查看,如果能查询到,那么索引成功,否则为失败;

    以上为基本的数据准备以及索引的大志流程,在这些流程里面启示还可以细分,为了保证数据能够被索引成功,定制不同的策略,比如状态表中的数据,检查完之后还可以在此爬取等策略;

    这种解决方案启示也不仅仅只是针对与Autonomy,目前已经切换了搜索引擎为:ES基于Lucence的搜索框架也是可以使用的。

    缺点就是在于实时性上;不过在这个思路的基础上是否可以更改策略,以保证它的实时性这个本人还没有去实现思考,后续希望能够做到。

  • 相关阅读:
    Qt计算器开发(三):执行效果及项目总结
    [HNOI2019]校园旅行
    How to fix nuget Unrecognized license type MIT when pack
    How to fix nuget Unrecognized license type MIT when pack
    git 通过 SublimeMerge 处理冲突
    git 通过 SublimeMerge 处理冲突
    git 上传当前分支
    git 上传当前分支
    gif 格式
    gif 格式
  • 原文地址:https://www.cnblogs.com/lishijia/p/4645135.html
Copyright © 2011-2022 走看看