zoukankan      html  css  js  c++  java
  • st项目-要素标记功能的实现以及经验总结

    功能描述:针对系统中的clue业务实体的内容,以及clue实体副附带的标签信息实现一个,点击标签时,标签关联的文段高亮的功能。类似于word中的批注,不同i的是,一个标签可以对应一个或者多个文段。

    实现中的问题以及选择方案:

    1.存文段还是存索引。

      当一个标签关联文段后,为了在请求后能够重新加载出高亮文段的位置,实现方式有两种:一是存文段的内容,每次查询实体详情的时候根据文段内容去计算索引。二是直接存文段索引,查询详情时直接返回索引即可知道哪些文段应该高亮。

      方案一的弊端就是每次查询详情的时候,都需要重新去计算索引;而好处则是,每次更新实体内容详情时,不用担心索引的更新问题。

      方案二的弊端就是每次更新文段的内容后,索引需要重新计算与更新。好处则是在文段未被修改的情况下,索引只需要计算一次,省去详情查询的索引计算环节,接口也会更快。

    最终还是选择了方案一的实现,因为是实体的内容肯定是会要修改的,这样则需要重新计算索引位置并更新;另外对于表结构来说,索引的数据结构必然更加复杂,因为一个文段可以重复在文中出现,这样对应的索引位置就会有多个,但是重复文段的话只需要存一个文段信息即可。

    2.脏数据的处理

      选择了存文段信息后,还有一个要考虑的点就是脏数据的处理,比如“我是一个大笨蛋”这里的“笨蛋”被高亮了,那么文段关联里的数据会存下“笨蛋”这个信息,但是如果此时句子被修改成了“我是一个大笨猪”,此时我们记录的信息就不会再有对应匹配的内容,也就是修改后的句子不会再出现高亮的提示。那么之前存的数据就成了一个脏数据,需要及时处理掉,这里我选择的去除时机是在查询的时候,如果文段中没有匹配的内容,那就将这条记录删除。(这里技术经理给出的建议是,历史数据也可以保留,可以用来提示用户此处的高亮记录有被修改过。但是我认为这是没有必要的,因为修改信息肯定是出于某种理由,旧的数据对用户来说价值并不大,而且就算保留也没有必要保留全部的历史信息,保留最后一次的编辑信息即可。)

    部署时的一些问题:

    1.定时任务扫描、

    有一个定时任务会扫描库中状态为init的文件,扫描后将状态改为analyse状态,之后开始解析。如果在解析过程中,降程序重启或者重新部署后,原本处于analyse状态的数据会一直处于该状态,因为扫描的程序不会再读取到这些数据。这里一个可行的方案就是,在程序启动后,将这些处于分析中状态的数据重新更新为init状态。

    2.跨域的问题

    在将一个表单页面内嵌到功能的审批流框架页中后,有一个文件上传接口出现了跨域的问题,奇怪的是其它接口没有此现象。 后来发现异常原因是对接的管理中心服务获取不到token, 这里经过排查发现,是文件上传接口的微服务配置了放行处理,也就是说在请求经过管理中心时,程序不会再设置其token值,从而导致token未被正确设置,这里将将行的配置取消后,程序即正常运作。

    3.oracle全文检索

    基本原理:文本预处理--分词--生成对应的索引表--在索引表查询, 查询时也会将查询的内容经行分词处理,所以查询的精准度是不如like的,但性能会比like好太多。

      

  • 相关阅读:
    KY2成绩排序
    python 获取list中元素的索引
    pandas 读取指定一列数据
    python 删除列表中的第一位元素
    python 时间戳
    python 除法保留小数点后两位
    python 读取excel表格的一列数据并去重
    python中获取Excel表格sheet页整页内容
    IDEA创建spring boot项目
    servlet一些问题
  • 原文地址:https://www.cnblogs.com/singular/p/14641962.html
Copyright © 2011-2022 走看看