CN114546948A - 一种富文本全文检索及云存储系统 - Google Patents

一种富文本全文检索及云存储系统 Download PDF

Info

Publication number
CN114546948A
CN114546948A CN202210172119.1A CN202210172119A CN114546948A CN 114546948 A CN114546948 A CN 114546948A CN 202210172119 A CN202210172119 A CN 202210172119A CN 114546948 A CN114546948 A CN 114546948A
Authority
CN
China
Prior art keywords
file
user
files
index
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
CN202210172119.1A
Other languages
English (en)
Inventor
朱淳臻
王胜康
孙晨
樊力豪
丁书浩
林超
董佳奇
产昊鹏
徐良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jinling Institute of Technology
Original Assignee
Jinling Institute of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jinling Institute of Technology filed Critical Jinling Institute of Technology
Priority to CN202210172119.1A priority Critical patent/CN114546948A/zh
Publication of CN114546948A publication Critical patent/CN114546948A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种富文本全文检索及云存储系统,包括:前端界面、Nginx Web服务器、Spring Cloud微服务框架、索引服务模块、搜索服务模块、授权服务模块以及云端原文件存储服务模块;本系统基于Spring Cloud微服务框架,支持各版本常见类型富文本的索引和检索,支持基于元数据的文件索引,采用动态匹配算法,将用户检索条件与建立索引的文件信息进行综合动态匹配采用云存储服务对文件进行统一管理并依据OSS对象存储服务动态更新。本发明可以降低企业文件存储系统部署成本,存储系统拓展灵活。基于文件元数据搜索(文件内容)与智能分析搜索内容,提高了文件搜索的精确度和速度,有较高的容灾备份能力,有效地减少用户的损失。

Description

一种富文本全文检索及云存储系统
技术领域
本发明涉及一种全文检索及云存储系统,特别是一种富文本全文检索及云存储系统。
背景技术
在信息时代快速发展的背景下,每个人每天都会产生大量的数据文件,据统计,仅2019年一年,全球就产生了33ZB的数据文件。大量的数据文件,不仅给文件的分类存储造成了困难,同时对文件的索引和检索也是巨大的挑战。如何在爆炸性输出的信息量中快速检索出用户需要的信息成为了刚性需求。
进入2020年,人们越来越多的使用互联网进行交流、工作协同,这其中的文件传输更是频繁。但现有的文件存储和搜索系统都存在诸多不足之处。例如现在使用最广泛的网盘,百度网盘和微盘等网盘,没有针对文件的内容进行检索的功能,并且上传文件类型与文件存储路径由用户自定义,对文件的全文检索难以实现,因此用户只能通过查找文件名来找到文件,这就导致无法精确的查找所需内容。其次大多数的网盘的内容都是半公开的,没有严格的权限管理系统,例如百度网盘,只要有链接和分享码即可查看,一旦泄露就无法确保文件的安全和隐私。有的企业或者单位考虑到文件的安全和隐私问题,就会考虑自建文件存储服务,因此可能会选择Seafile、NextCloud等文件共享系统。虽然这些系统具有完善的权限管理、文件共享等功能,但也无法对上传的所有文件的内容进行索引和检索,这导致在文件的数量十分庞大时,它们存储的文件只有熟悉自身所需文件存放地址的用户才能快速的找到文件,企业或单位的新人就很难快速上手这些系统。还有的单位会考虑FreeNAS、TrueNAS、群晖等NAS系统作为文件共享和存储服务器,但这些系统中也存在类似的问题。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种富文本全文检索及云存储系统。
为了解决上述技术问题,本发明公开了一种富文本全文检索及云存储系统(RichText Full-text Retrieval and Cloud Storage System),包括:前端界面、Nginx Web服务器、 Spring Cloud微服务框架、索引服务模块、搜索服务模块、授权服务模块以及云端原文件存储服务模块;
其中,前端界面包括:用户登录界面、搜索界面和上传及下载操作界面;
Nginx Web服务器中包括反向代理服务模块,该模块与Spring Cloud Gateway网关进行对接;
Spring Cloud微服务框架用于实现分布式高速搜索、上传和下载;
索引服务模块用于对用户上传的各种文件,提取元数据,并按倒排索引方法建立索引文件;
搜索服务模块用于通过算法分析搜索内容,形成语法树和词链表,与文件上传时建立的索引文件进行对比,检索文件内容,并返回用户所需的文件;
授权服务模块采用Spring Cloud为用户提供授权服务,管理用户搜索、上传和下载文件的权限;
云端原文件存储服务模块将用户上传的文件存储在云端,提供容灾备份,实现集中统一管理文件。
本发明中所述前端界面包括:
用户注册与登录界面、用户组创建与管理界面、访问鉴权界面、文件上传与下载界面以及文件搜索与结果展示界面;
其中,用户注册与登录界面包括:用户注册,用户个人信息设置,用户登录;用户登录方法包括账号登录与手机短信登录;
用户组创建与管理界面包括:通过管理员权限创建员工组,并设置组与组之间的关系;通过管理员权限设置已完成注册员工的员工组信息;
访问鉴权界面包括:对用户是否有权搜索或下载文件进行鉴权,保护文件私有性;
文件上传与下载界面包括:进行文件的上传与下载,下载文件前先鉴权用户是否有权下载文件;
文件搜索与结果展示界面包括:用户输入搜索内容,系统判断用户组后,分别向本组、子组和根组搜索相应文件;将匹配的文件与文件中匹配的内容在页面上面进行展示,供用户选择。
本发明中所述反向代理服务模块采用Nginx来提供反向代理服务,并且与SpringCloud Gateway网关对接,即Nginx将访问直接转发到Spring Cloud Gateway网关;同时采用云存储,将功能选择和下载操作从Nginx系统中剥离。
本发明中所述Spring Cloud微服务框架包括:
使用服务发现框架Eureka实现服务注册和发现,所有的其他的微服务组件都需要向服务发现框架Eureka注册自己,在服务需要微服务配合完成功能时,通过服务发现框架Eureka进行查找其他服务并调用,系统功能面向微服务设计,实现系统服务复用;
用户发送的所有请求,先通过Nginx的代理被Spring Cloud Gateway接收,Gateway 判断用户所请求的服务后,去服务发现框架Eureka查找对应微服务地址,将用户的请求转发给对应的微服务,微服务根据用户权限最终实现该服务。
本发明中所述索引服务模块包括:对用户通过前端界面上传到云存储中心的各种文件提取元数据,按倒排索引法进行建立索引文件;元数据的提取根据不同的文件类型所提供的接口,采用相应的方法完成;
对用户的文件建立索引文件时,索引用户上传文件的正文内容,同时索引文件的作者,文件的最近修改日期,文件的页数和大小,形成元数据;用户检索文件时,检索具有同一类元数据的文件,不同类型的文件产生不同的元数据;用户通过自定义元数据,对文件进行个性化归类和建立索引;通过设置特定字段元数据,对文件访问权限进行控制。
本发明中所述搜索服务模块包括:通过对用户输入的搜索内容进行解析、索引获取和索引匹配,实现对文件匹配;根据搜索内容出现的频率、搜索内容的重要性、文件的长度、文件的重要性以及用户搜索的次数匹配搜索文件,动态改变搜索内容和文件的权重;其中,权重的动态改变规则包括:
用户输入的搜索内容在用户可以检索的所有文件中出现的次数越多,则这个搜索内容的权重越小;相反,用户输入的搜索内容在用户可以检索的所有文件中出现的次数越少,则这个搜索内容的权重越大;对于单个文件,如果用户输入的搜索内容在某个文件中出现的次数越多,则该文件的权重就越大,如果用户输入的搜索内容在某个文件中出现的次数越少,则该文件的权重就越小;
用户在搜索内容时对不同的关键词添加不同的权重,区分关键词的重要程度,包含更重要的关键词的文件获得更大的权重;包含关键词越多的文件,权重越大;文件中包含多个字段时,根据字段的默认值判断权重,字段的值越大,权重越大;
文件被赋予初始权重,文件被下载的次数越多,则初始权重越大。
本发明中所述搜索服务模块包括:
搜索内容解析组件,包括:系统先调用分词功能,将用户输入分成一个一个单独的词,去除标点符号以及没有实际意义的词,得到处理后的结果:词元;同时根据词元在日常使用中的词性将搜索内容的词元形成语法树;
索引获取组件,包括:在搜索内容解析组件获取到语法树后,将语法树传给索引获取组件,索引获取组件从索引文件中调取文件的索引,在反向索引表中找出包含语法树中词的文件链表,对包含这些词的链表进行合并操作,得到包含所有词的文档链表;将包含所有词的文档链表与不需要的词的文档链表进行行差操作,去除包含不需要的词的文档,最后得到用户搜索的所有文档链表;索引获取的过程中,使用布尔算法,即使用与、或和非的条件查找匹配的文档,将所有包含使用和和或连接的词以及不包含非连接的词的文档作为结果集进行返回;
索引匹配组件,包括:在服务器得到用户所需的所有文档的链表后,根据搜索内容和用户的输入内容的相关性匹配进行排序;通过计算用户输入的搜索内容形成的语法树中每个词元的权重和文档的内容、标题内容、作者、上传时间、下载次数以及文档类型进行运算,获得每个文档的相关性数值,数值越高排序越靠前;具体方法包括:
步骤1,对词频进行计算,计算方法如下:
Figure BDA0003518691460000041
其中,词t在文档d的词频tf是该词在文档中出现次数frequency的平方根;
步骤2,,对词的逆向文档频率进行计算,计算方法如下:
idf(t)=1+log(numDocs/(docFreq+1))
其中,索引中文档数量numDocs除以所有包含该词的文档数docFreq,然后求其对数即为词t的逆向文档频率idf(t);
步骤3,对,词的归一值进行计算,计算方法如下:
Figure BDA0003518691460000042
其中,字段中词数numTerms平方根的倒数为字段长度的归一值norm(d);
针对多词查询的情况,使用向量空间模型,即将文档和查询都以向量的形式表示,并将这些向量放置于同一个坐标系中,向量间的角度越大,则相关度越低;最后将上述公式结合,得到文档相关度打分公式:
score(q,d)=queryNorm(q)·coord(q,d)·∑(tf(tind)·idf(t)2·t.getBoost()·norm(t,d))(tinq)
其中,queryNorm为查询归一化因子,即查询中每个词的idf值的平方和的开根号的倒数,coord则是查询协调因子,协调因子将评分与文档中匹配词的数量相乘,然后除以查询中所有词的数量,这可以使得查询词包含度较高的文档得分更高;公式中的求和公式含义为查询语句q中每个词t对于文档d的权重和,t.getBoost()即为获取词 t的权重;
计算获得最终文档集后,在文件的相应段落中将匹配相关的内容高亮显示,并将处理后的结果发送给用户;
在用户通过浏览返回的文件名和部分匹配段落信息,找到所搜索的文件后,对相应的文件进行下载;用户通过浏览器向服务器发送下载文件的请求,服务器返回该文件的下载地址供浏览器进行下载。
本发明中所述授权服务模块包括:
系统用户的授权通过Spring Cloud框架提供,采用角色控制用户权限方案;每个用户被分配多个角色,每个角色具有不同权限,每种权限对应不同的后端API接口。
本发明中所述云端原文件存储服务模块包括:
将用户上传的文件存储在云端统一管理,确保文件唯一性;云端原文件存储服务模块对文件的修改进行记录,索引的更新将依据对象存储oss的修改;云存储中心将源文件与文件索引分离;
用户上传的文件被系统索引并建立索引文件后,产生的索引文件存储在服务器中,而原文件上传至云端进行存储,云端返回文件地址;系统在进行下载流程时,向对象存储服务器发送文件地址和对应的密钥,对象存储服务器在验证密钥后,根据文件地址,生成文件的下载地址,并将文件的下载地址返回给系统,系统再将文件的下载地址发送给用户;该下载地址具有有效期限,过期后无法进行下载。
本发明所述一种富文本全文检索及云存储系统采用B/S架构,前端界面采用React框架构建UI,支持UI页面定制;同时,通过React框架对系统进行维护升级。
有益效果:
(1)把Spring Cloud微服务框架应用在文件检索领域,系统高度模块化,降低了系统各个模块之间的耦合度,便于开发维护,可复用程度高,有利于中小型企业进行系统的部署;
(2)系统给用户提供丰富的角色,通过分配的用户角色实现权限管理功能,使交叉权限统属于一个角色。这样既避免了太多的权限控制接口,又方便用户理解自身的权限,同时有利于保障单位文件的安全性;
(3)本系统支持绝大多数常用的富文本的全文检索(如Word、PDF、PowerPoint、Excel、Text等)。系统对于上传的文件进行元数据的提取并存储在服务器上,然后分析用户查询内容,按倒排索引法等方法进行建立索引文件,通过服务器上的元数据与索引文件的匹配,使得用户可以快速、精确的检索到所需的文件,从而解决了现在大部分存储服务器无法对文件内容进行查找的缺点;
(4)系统可针对不同的使用场景采用定向优化的匹配算法,解决了系统在不同场景中检索相同内容,查询结果的排序却是相同的问题(即当前场景中所需的文件没有被优先显示),使得用户可以精确的检索到所需的文件;
(5)将用户上传的文件存储在云端,无需自行购置存储服务器,免去了企业大量的资金投入,且云服务资源可以按需购买,弹性使用,灵活扩展,可随时增加和减少资源,同时也极大减少了运维成本,同时系统也支持用户部署自己的OSS存储系统;
(6)系统将企业的重要文件存储在云端,在提高容灾备份的能力,并大大减少企业由于意外情况而产生的损失的同时,可以对企业的所有文件进行统一的管理;
(7)系统可以提供分布式的云端存储功能,解决了系统的并发性能低以及大量的文件上传和下载会严重影响系统性能的问题,借助“云”概念,使文件的上传、下载不再受到硬件的影响,提高系统的高并发能力,让用户的上传和下载都具有极佳的用户体验;
(8)系统提供分布式的全文检索功能,可以同时对多个核中的文件进行检索,提高了检索文件的速度。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/ 或其他方面的优点将会变得更加清楚。
图1为本发明的整体架构示意图。
图2为前端界面功能示意图。
图3为登录服务流程示意图。
图4为文件上传与索引示意图。
图5为文件云存储服务示意图。
具体实施方式
在信息时代的快速发展的背景下,每个人每天都会产生大量的数据文件,大量文件需要被存储,以方便以后查找。本发明提出一种富文本全文检索及云存储系统,利用微服务框架,给用户授予权限,索引并检索用户所需的文件内容,利用云端存储用户的原文件。下面结合附图以及具体实施方式做详细说明。
如图1所示,本发明所述的系统包括以下的结构:
前端界面11,用于用户登录、搜索、上传、下载等操作;Nginx Web服务器12,用于反向代理服务与Spring Cloud Gateway网关对接;系统采用的Spring Cloud框架13,提供分布式的高速搜索、上传、下载等功能;索引服务14,用于对用户上传的各种文件,提取元数据,并按倒排索引法进行建立索引文件;搜索服务15,通过算法分析搜索内容,形成语法树和词链表,然后与上传文件时建立的索引文件对比,检索文件内容,并返回用户所需的文件;鉴权服务16,使用Spring Cloud来为用户提供授权服务,管理用户搜索、上传、下载文件的权限;云端原文件存储服务17,将用户上传的文件存储在云端,提供更好的容灾备份能力,集中统一管理文件。
前端界面11,如图2所示,包含用户注册与登录、用户组创建与管理、访问鉴权、文件上传、文件下载,文件搜索与文件搜索结果展示等页面。
本系统采用B/S架构,前端采用React框架构建UI,React丰富的组件和基于Npm、Webpack、ES6、Antd等技术的开发方式,使得系统开发、部署更快、更稳定、界面优美、交互友好,并且可以根据企业的实际需求定制专属UI页面。同时,React框架也有利于系统的维护升级,将主要计算量放在服务器端,可以大大减少用户端的计算量,提高服务的质量。页面详细功能如下:
(1)用户注册与登录:用于用户的注册,包含姓名、电话、工号等个人信息(可根据单位要求设置),用户登录包含账号登录与手机短信登录。
(2)用户组的创建与管理:此功能是单位管理员用于创建员工组,并且设置组与组之间的关系(子组)。单位管理员设置已完成注册的员工的组。
(3)访问鉴权:用于鉴权用户是否有权搜索、下载此文件,保护文件的相对私有性。
(4)文件上传与下载:用于文件的上传与下载功能,下载文件前先鉴权用户是否有权下载文件。
(5)文件搜索与结果展示:用户输入搜索内容后,系统先判断用户组,然后分别向本组、子组和根组搜索相应文件。将匹配的文件与文件中匹配的内容在页面上面进行展示,方便用户选择相应的文件。
Nginx Web服务器12,用于反向代理服务与Spring Cloud Gateway网关对接。
本系统采用Nginx来提供反向代理服务,并且与Spring Cloud Gateway网关对接,即Nginx将访问直接转发到Spring Cloud Gateway网关。同时由于采用了云存储,将传统系统中的功能选择和下载等功能从Nginx系统中剥离。此方案减少了对Nginx的配置,将对不同功能的访问的控制放到Spring Cloud Gateway网关中动态编程实现,增强了系统的伸缩性和扩展性。采用此方案可以使Nginx系统的配置更加简洁,有利于系统维护,同时并发性能更好,提供更大的并发量,CPU和内存的占用率低。
系统采用的Spring Cloud框架13:
本系统采用Spring Cloud微服务框架搭建,使得系统的定制开发与部署效率更高,有利于缩短系统的开发周期,减少系统的开发维护成本,同时提供丰富的权限管理功能。
本系统使用Eureka作为服务发现和注册中心,所有的其他的微服务组件都需要向Eureka注册自己,在服务需要微服务配合完成功能时,通过Eureka进行查找其他服务并调用,使得系统功能面向微服务设计,提升了系统服务的可复用性。
用户发送的所有请求,都会先通过Nginx的代理被Spring Cloud Gateway接收,Gateway在判断用户所请求的服务后,去Eureka查找到对应的微服务地址,然后再将用户的请求转发给对应的微服务,微服务根据用户权限最终实现相关服务。
以下对本系统中主要微服务的调用,做进一步的说明。
(1)登录,如图3所示:当用户输入用户名和密码并点击登录按钮后,用户的登录请求会首先被发送到Nginx,然后Nginx反向代理给Spring Cloud Gateway,当 Gateway发现用户请求的路由是“/login”时,会去Eureka寻找提供对应路由的微服务, Eureka便会将登录服务的地址发送给Gateway,Gateway在得知登录服务的地址后,会将用户的登录请求发送给登录服务,登录服务从Redis数据库(系统启动时,Redis会从Mysql数据库中读取用户信息)中获取用户相应的信息,来检测用户的用户名和密码(或者手机号和验证码等多种登录方式)是否正确和是否存在,最后将结果返回给前端页面以供用户登录。
(2)文件上传与索引,如图4所示:当用户上传文件到云存储中心时,索引模块就会对文件建立索引。当用户选择所需上传的文件并点击上传按钮后,用户的文件上传请求会首先被发送到Nginx,然后Nginx反向代理给Spring Cloud Gateway,当Gateway 发现用户的请求的路由是“/upload”时,首先会检查用户是否登录,以及该用户是否有上传文件的权限,如果该用户已经登录,并具有该权限,则Gateway会请求文件管理服务(包含文件上传与下载功能)调用云存储中心接口上传文件至云存储中心,文件管理服务会根据用户名与所在组分配文件存储地址。完成文件上传到云存储中心后,文件管理服务会在Eureka中查找到索引服务并调用索引服务完成文件索引。这种设计保障了文件只存储在云存储中心的唯一性,将文件存储与索引分离,使得系统结构更加合理清楚。
(3)搜索:用户登录进入系统后,可以进行文件的搜索,用户在搜索栏输入搜索内容并点击搜索按钮后,用户的文件搜索请求会首先被发送到Nginx,然后Nginx反向代理给Spring Gateway,当Gateway发现用户的请求的路由是“/search”时,会首先检查用户是否登录,以及该用户是否有搜索文件的权限,如果该用户已经登录,并具有相应的权限,则Gateway会向Eureka询问搜索服务的地址,Eureka便将搜索服务的地址发送给Gateway,Gateway在得知搜索服务的地址后,将用户的搜索请求发送给搜索服务,搜索服务在获取用户的搜索请求后,便开始文件搜索的流程,最后将结果返回给前端页面。
索引服务14:用于对用户通过前端页面上传到云存储中心的各种文件,例如各种版本的Word、PowerPoint、Excel和PDF文档等各种常用文件,然后提取元数据按倒排索引法进行建立索引文件。元数据的提取将根据不同的文件类型所提供的接口,编写相应的算法完成提取。
对用户的文件建立索引文件时不仅会索引用户上传文件的正文内容,同时也会索引文件的其他内容,比如文件的作者,文件的最近修改日期,文件的页数和大小等,形成元数据。这样用户可以在检索文件时,可以检索具有同一类元数据的文件,不同类型的文件通常会产生不同的元数据。用户也可根据需求,自定义元数据,来方便对文件进行个性化归类和建立索引。比如在上传时,对同一类文件定义相同的元数据,这样用户在检索文件时,就可以单独对具有同一类元数据的文件进行检索。
在本系统中,每个文件在被索引时,都会被加上一个特定的字段元数据,默认的字段是“default”,需要用户文件上传时显式指定的字段是“default”、“private”、“group”、“protectup”、“protectdown”和“public”。
以下对本系统中文件的字段的含义做进一步的说明。
(1)使用“default”字段:用户在上传文件时,系统默认用户使用“default”字段,所以用户不需要显式指定文件使用“default”字段。当用户在上传文件时,使用“default”字段,表示用户此次上传的文件可以被和该用户处于同组的用户访问,其他任何人都没有权限访问该文件。
(2)使用“private”字段:用户在上传文件时,系统不会默认指定文件使用“private”字段,所以用户需要显式指定文件使用“private”字段。当用户在上传文件时,使用“private”字段,则表示,用户此次上传的文件只能被上传文件的用户一个人访问,其他任何人都没有权限访问该文件。
(3)使用"group"字段:用户在上传文件时,系统不会默认指定文件使用“group”字段,所以用户需要显式指定文件使用“group”字段。当用户在上传文件时,使用“group”字段,表示用户此次上传的文件只能被处于同组的用户访问,其他任何人都没有权限访问该文件。
(4)使用“protectup”字段:用户在上传文件时,系统不会默认指定文件使用“protectup”字段,所以用户需要显式指定文件使用“protectup”字段。当用户在上传文件时,使用“protectup”字段,表示用户此次上传的文件可以被处于同组的用户,以及处于该用户的组的根组的用户访问,其他任何人都没有权限访问该文件。
(5)使用“protectdown”字段:用户在上传文件时,系统不会默认指定文件使用“protectdown”字段,所以用户需要显式指定文件使用“protectdown”字段。当用户在上传文件时,使用“protectdown”字段,表示用户此次上传的文件可以被处于同组的用户,以及处于该用户组的子组的用户访问,其他任何人都没有权限访问该文件。
(6)使用“public”字段:用户在上传文件时,系统不会默认指定文件使用“public”字段,所以用户需要显式指定文件使用“public”字段。当用户在上传文件时,使用“public”字段,表示用户此次上传的文件可以被所有其他的用户访问。
以下对上文中提到的“同组”,“根组”和“子组”的含义做进一步的说明。
本系统中的“同组”,“根组”和“子组”都是一个相对的概念,除了等级最高的一个组,其他任何一个组是被更高一级的“根组”所创建,同时任何一个组,都可以创建更低一级的子组。
搜索服务15:通过算法分析搜索内容,然后与上传文件时通过倒排索引法建立的索引文件进行匹配返回用户所需的文件。系统通过对用户输入的搜索内容进行解析、索引获取和索引匹配等步骤,来实现对文件匹配。系统能根据搜索内容出现的频率、搜索内容的重要性、文件的长度、文件的重要性、用户搜索的次数等多种因素匹配搜索文件,并且可以动态改变搜索内容和文件的权重,其匹配方法复杂、匹配因素多样、匹配条件动态改变。例如:
(1)用户输入的搜索内容在用户可以检索的所有文件中出现的次数越多,则这个搜索内容的权重越小;相反,用户输入的搜索内容,在用户可以检索的所有文件中出现的次数越少,则这个搜索内容的权重越大。而对于单个文件,如果用户输入的搜索内容,在某个文件中出现的次数越多,则该文件的权重就越高,如果用户输入的搜索内容,在某个文件中出现的次数越少,则该文件的权重就越低。
(2)用户可以在搜索内容时,对不同的关键词添加不同的权重,来区分关键词的重要程度,这样包含更重要的关键词的文件将会获得更高的评分。由于用户输入的搜索内容可能包含有多个关键词,所以包含关键词越多的文件,评分也越高。同时一个文件中通常包含多个字段,如标题、作者、修改日期、正文等,字段通常被定义了默认的值,字段的值越大,则该字段在打分时越重要,即在相应字段中包含搜索内容的文件的评分将更高。
(3)每个文件也会被赋予一个初始的权重,而用户每次的下载都可以改变被下载的文件的初始权重,即文件被下载的次数越多,则初始权重越大。变化的权重将用来辅助搜索结果的排序,将与用户输入字段最符合的文件排在前面。即系统采用复杂的匹配方法、多样的匹配因素、动态的匹配条件来完成用户查找。
以下对本系统的搜索服务做进一步的说明。
(1)搜索内容解析:系统先调用分词功能,将用户输入分成一个一个单独的词,然后去除标点符号,最后去除一些没有实际意义的词得到了处理后的结果:词元。同时根据词元在日常使用中的词性(如:主谓宾定状补)将搜索内容的词元形成语法树。
(2)索引获取:在搜索内容解析组件获取到语法树后,将语法树传给索引获取组件,该组件先从索引文件中调取文件的索引,然后在反向索引表中,分别找出包含语法树中词的文件链表,其次对包含这些词的链表进行合并操作,得到包含所有词的文档链表。最后将词链表与不需要的词的文档链表进行行差操作,去除包含不需要的词的文档,最后得到的便是用户所需的所有文档链表。索引获取的过程主要使用了布尔算法,即使用AND、OR和NOT(与、或、非)这样的条件来查找匹配的文档,这样的查询会将所有包含使用AND和OR连接的词以及不包含NOT连接的词的文档作为结果集进行返回。
(3)索引匹配:在服务器得到用户所需的所有文档的链表后,文档的排序还是混乱的,所以需要使用相应的算法根据搜索内容和用户的输入内容的相关性匹配进行排序。通过计算用户输入的搜索内容形成的语法树中每个词元的权重(比如:句子的主谓宾语权重相对较大)和文档的内容、标题内容、作者、上传时间、下载次数、文档类型等一系列值进行运算,获得每个文档的相关性数值,数值越高的,排序越靠前。首先是对词频的计算,计算公式为:
Figure BDA0003518691460000121
公式的含义为词t在文档d的词频(tf)是该词在文档中出现次数的平方根。然后是对词的逆向文档频率的计算,计算公式为:
idf(t)=1+log(numDocs/(docFreq+1))
公式的含义为索引中文档数量(numDocs)除以所有包含该词的文档数(docFreq),然后求其对数即为词t的逆向文档频率。对于计算词的归一值的计算公式为:
Figure BDA0003518691460000131
公式的含义为字段中词数平方根的倒数为字段长度的归一值。针对多词查询的情况,还需使用向量空间模型,即将文档和查询都以向量的形式表示,然后将这些向量放置于同一个坐标系中,向量间的角度越大,则相关度越低。最后将上边的几个公式结合起来,就可以得到文档相关度打分公式:
score(q,d)=queryNorm(q)·coord(q,d)·∑(tf(tind)·idf(t)2·t.getBoost()·norm(t,d))(tinq)
公式中的queryNorm为查询归一化因子,即查询中每个词的idf值的平方和的开根号的倒数,coord则是查询协调因子,协调因子将评分与文档中匹配词的数量相乘,然后除以查询中所有词的数量,这可以使得查询词包含度较高的文档得分更高。公式中的求和公式含义为查询语句(q)中每个词(t)对于文档(d)的权重和,其中tf和idf 以及norm都在上文提到过,而t.getBoost()即为获取词(t)的权重。
当经过一些列计算获得最终文档集后,会在文件的相应段落中,将匹配相关的内容高亮显示,为用户提供更清晰的视觉体验,最后将处理后的结果发送给用户。
在用户通过浏览返回的文件名、部分匹配段落等信息,找到所需要的文件后,用户可以对相应的文件进行下载,通过点击相应文件显示信息右侧的下载按钮,浏览器便会向服务器发送下载文件的请求,服务器返回该文件的下载地址供浏览器进行下载。
鉴权服务16:使用Spring Cloud来为用户提供鉴权服务。
系统用户的授权通过Spring Cloud框架提供,采用RBAC方案,即用角色控制用户权限。每个用户可以被分配到多个不同的角色,每个角色具有一定的权限,每种权限对应着不同的后端API接口。
以下对本系统中的用户权限做进一步的说明。
(1)权限:本系统中,有对用户信息(包含用户注册信息和用户上传的文件)进行增删改查的权限,有登录的权限,有上传文件的权限,有下载文件的权限,有监管系统的权限。每种权限都对应着一种或多种后端API,而每个用户在请求相应的API 之前,系统都会检测该用户是否有对应的权限。
(2)角色:本系统中,有系统管理角色,有用户管理角色,有组内用户角色,有普通用户角色。系统管理角色负责维护整个系统,一般由1-3人组成,有权对系统中的所有功能进行操作;用户组管理角色有对本组与子组中的所有功能进行操作;组内用户角色只能对自己上传的文件进行控制;普通角色有检索文件的权限,下载文件的权限,但没有上传文件的权限。本系统通过角色控制用户的权限。
(3)用户组:本系统采用用户组来实现用户和用户权限的管理。新用户需要在相应的网页进行注册,输入相应的信息(注册信息由系统使用单位决定),最后需提交给系统管理员进行审核,用户只有在审核通过后,才可以登录进入本系统,审核通过的用户为普通用户。新用户在审核通过后,将被系统管理员分配到相应的用户组。用户组的用户管理员由系统管理员决定。而组内用户和组内普通用户的管理,由用户组的用户管理员决定。
需要指出的是,此处所说的用户或用户组所具有的检索文件和下载文件的权限,是指对应的文件开放了可供用户或用户组访问和下载的权限时,用户才能访问和下载对应的文件。如果一个文件未开放可供用户或用户组访问和下载的权限,即使用户具有检索和下载文件的权限,也无法对该文件进行检索和下载。
相较于传统的单体应用的session授权,采用Spring Cloud框架实现授权,有如下优势:
(1)支持多实体,多状态的授权,满足现实生活中的复杂授权状态(如:文件能不能被用户下载,即取决于文件是否授权给用户下载,又取决于用户有没有权限下载文件)。
(2)授权服务在系统中可以对多服务进行支撑,方便开发人员和用户对授权功能的开发与管理,并且支持分布式的授权服务,提高高并发下的授权服务速度,提升用户体验。
文件云存储服务17,如图5所示:将用户上传的文件存储在云端统一管理,确保文件的唯一性。云存储服务会对文件的修改进行记录,索引的更新将依据oss(对象存储)的修改。云存储服务能提升用户上传下载文件的速度。云存储中心将源文件与文件索引(SpringCloud框架中的文件索引服务可以直接对oss输出的文件流进行索引) 分离提高索引的效率,提供更好的容灾备份能力。
用户上传的文件被系统索引并建立索引文件后,产生的索引文件会被存储在服务器中,而原文件将会被上传至云端进行存储,如将文件上传至阿里云对象存储,云端将返回文件地址,以提供给服务器随时获取文件的下载地址。系统在进行下载流程时,向对象存储服务器发送文件地址和对应的密钥,对象存储服务器在验证密钥后,根据文件地址,生成文件的下载地址,并将文件的下载地址返回给系统,系统再将文件的下载地址发送给用户。该下载地址具有一定的有效期限(如一分钟),过期后便无法再进行下载,这可以有效的保证文件的安全性。
本系统将原文件存储在云端有如下优势:
(1)可以将重要的文件备份多份,并存储在不同地区的云端服务器,来提高重要的文件的容灾备份能力;
(2)可以减少本地服务器的存储空间的占用,有效的减少成本;
(3)用户下载文件时,不是从服务器直接获取文件,而是从服务器获取文件的云端下载链接,然后从云端下载文件,这样可以减少服务器的带宽占用,减少文件下载服务对其他索引、搜索等服务的影响,同时还可以提高用户下载文件的速度以及下载服务的高并发能力。
本发明提供了一种富文本全文检索及云存储系统的思路及方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

Claims (10)

1.一种富文本全文检索及云存储系统,其特征在于,包括:前端界面、Nginx Web服务器、Spring Cloud微服务框架、索引服务模块、搜索服务模块、授权服务模块以及云端原文件存储服务模块;
其中,前端界面包括:用户登录界面、搜索界面和上传及下载操作界面;
Nginx Web服务器中包括反向代理服务模块,该模块与Spring Cloud Gateway网关进行对接;
Spring Cloud微服务框架用于实现分布式高速搜索、上传和下载;
索引服务模块用于对用户上传的各种文件,提取元数据,并按倒排索引方法建立索引文件;
搜索服务模块用于通过算法分析搜索内容,形成语法树和词链表,与文件上传时建立的索引文件进行对比,检索文件内容,并返回用户所需的文件;
授权服务模块采用Spring Cloud为用户提供授权服务,管理用户搜索、上传和下载文件的权限;
云端原文件存储服务模块将用户上传的文件存储在云端,提供容灾备份,实现集中统一管理文件。
2.根据权利要求1所述的一种富文本全文检索及云存储系统,其特征在于,所述前端界面包括:
用户注册与登录界面、用户组创建与管理界面、访问鉴权界面、文件上传与下载界面以及文件搜索与结果展示界面;
其中,用户注册与登录界面包括:用户注册,用户个人信息设置,用户登录;用户登录方法包括账号登录与手机短信登录;
用户组创建与管理界面包括:通过管理员权限创建员工组,并设置组与组之间的关系;通过管理员权限设置已完成注册员工的员工组信息;
访问鉴权界面包括:对用户是否有权搜索或下载文件进行鉴权,保护文件私有性;
文件上传与下载界面包括:进行文件的上传与下载,下载文件前先鉴权用户是否有权下载文件;
文件搜索与结果展示界面包括:用户输入搜索内容,系统判断用户组后,分别向本组、子组和根组搜索相应文件;将匹配的文件与文件中匹配的内容在页面上面进行展示,供用户选择。
3.根据权利要求2所述的一种富文本全文检索及云存储系统,其特征在于,反向代理服务模块采用Nginx来提供反向代理服务,并且与Spring Cloud Gateway网关进行对接,即Nginx将访问直接转发到Spring Cloud Gateway网关;同时采用云存储,将功能选择和下载操作从后端系统中剥离。
4.根据权利要求3所述的一种富文本全文检索及云存储系统,其特征在于,所述SpringCloud微服务框架包括:
使用服务发现框架Eureka实现服务注册和发现,所有的其他的微服务组件都需要向服务发现框架Eureka注册自己,在服务需要微服务配合完成功能时,通过服务发现框架Eureka进行查找其他服务并调用,系统功能面向微服务设计,实现系统服务复用;
用户发送的所有请求,先通过Nginx的代理被Spring Cloud Gateway接收,Gateway判断用户所请求的服务后,去服务发现框架Eureka查找对应微服务地址,将用户的请求转发给对应的微服务,微服务根据用户权限最终实现该服务。
5.根据权利要求4所述的一种富文本全文检索及云存储系统,其特征在于,索引服务模块包括:对用户通过前端界面上传到云存储中心的各种文件提取元数据,按倒排索引法进行建立索引文件;元数据的提取根据不同的文件类型所提供的接口,采用相应的方法完成;
对用户的文件建立索引文件时,索引用户上传文件的正文内容,同时索引文件的作者,文件的最近修改日期,文件的页数和大小,形成元数据;用户检索文件时,检索具有同一类元数据的文件,不同类型的文件产生不同的元数据;用户通过自定义元数据,对文件进行个性化归类和建立索引;通过设置特定字段元数据,对文件访问权限进行控制。
6.根据权利要求5所述的一种富文本全文检索及云存储系统,其特征在于,搜索服务模块包括:通过对用户输入的搜索内容进行解析、索引获取和索引匹配,实现对文件匹配;根据搜索内容出现的频率、搜索内容的重要性、文件的长度、文件的重要性以及用户搜索的次数匹配搜索文件,动态改变搜索内容和文件的权重;其中,权重的动态改变规则包括:
用户输入的搜索内容在用户可以检索的所有文件中出现的次数越多,则这个搜索内容的权重越小;相反,用户输入的搜索内容在用户可以检索的所有文件中出现的次数越少,则这个搜索内容的权重越大;对于单个文件,如果用户输入的搜索内容在某个文件中出现的次数越多,则该文件的权重就越大,如果用户输入的搜索内容在某个文件中出现的次数越少,则该文件的权重就越小;
用户在搜索内容时对不同的关键词添加不同的权重,区分关键词的重要程度,包含更重要的关键词的文件获得更大的权重;包含关键词越多的文件,权重越大;文件中包含多个字段时,根据字段的默认值判断权重,字段的值越大,权重越大;
文件被赋予初始权重,文件被下载的次数越多,则初始权重越大。
7.根据权利要求6所述的一种富文本全文检索及云存储系统,其特征在于,所述搜索服务模块包括:
搜索内容解析组件,包括:系统先调用分词功能,将用户输入分成一个一个单独的词,去除标点符号以及没有实际意义的词,得到处理后的结果:词元;同时根据词元在日常使用中的词性将搜索内容的词元形成语法树;
索引获取组件,包括:在搜索内容解析组件获取到语法树后,将语法树传给索引获取组件,索引获取组件从索引文件中调取文件的索引,在反向索引表中找出包含语法树中词的文件链表,对包含这些词的链表进行合并操作,得到包含所有词的文档链表;将包含所有词的文档链表与不需要的词的文档链表进行行差操作,去除包含不需要的词的文档,最后得到用户搜索的所有文档链表;索引获取的过程中,使用布尔算法,即使用与、或和非的条件查找匹配的文档,将所有包含使用和和或连接的词以及不包含非连接的词的文档作为结果集进行返回;
索引匹配组件,包括:在服务器得到用户所需的所有文档的链表后,根据搜索内容和用户的输入内容的相关性匹配进行排序;通过计算用户输入的搜索内容形成的语法树中每个词元的权重和文档的内容、标题内容、作者、上传时间、下载次数以及文档类型进行运算,获得每个文档的相关性数值,数值越高排序越靠前;具体方法包括:
步骤1,对词频进行计算,计算方法如下:
Figure FDA0003518691450000031
其中,词t在文档d的词频tf是该词在文档中出现次数frequency的平方根;
步骤2,,对词的逆向文档频率进行计算,计算方法如下:
idf(t)=1+log(numDocs/(docFreq+1))
其中,索引中文档数量numDocs除以所有包含该词的文档数docFreq,然后求其对数即为词t的逆向文档频率idf(t);
步骤3,对词的归一值进行计算,计算方法如下:
Figure FDA0003518691450000041
其中,字段中词数numTerms平方根的倒数为字段长度的归一值norm(d);
针对多词查询的情况,使用向量空间模型,即将文档和查询都以向量的形式表示,并将这些向量放置于同一个坐标系中,向量间的角度越大,则相关度越低;最后将上述公式结合,得到文档相关度打分公式:
score(q,d)=queryNorm(q)·coord(q,d)·∑(tf(t in d)·idf(t)2·t.getBoost()·norm(t,d))(t in q)
其中,queryNorm为查询归一化因子,即查询中每个词的idf值的平方和的开根号的倒数,coord则是查询协调因子,协调因子将评分与文档中匹配词的数量相乘,然后除以查询中所有词的数量,这可以使得查询词包含度较高的文档得分更高;公式中的求和公式含义为查询语句q中每个词t对于文档d的权重和,t.getBoost()即为获取词t的权重;
计算获得最终文档集后,在文件的相应段落中将匹配相关的内容高亮显示,并将处理后的结果发送给用户;
在用户通过浏览返回的文件名和部分匹配段落信息,找到所搜索的文件后,对相应的文件进行下载;用户通过浏览器向服务器发送下载文件的请求,服务器返回该文件的下载地址供浏览器进行下载。
8.根据权利要求7所述的一种富文本全文检索及云存储系统,其特征在于,所述授权服务模块包括:
系统用户的授权通过Spring Cloud框架提供,采用角色控制用户权限方案;每个用户被分配多个角色,每个角色具有不同权限,每种权限对应不同的后端API接口。
9.根据权利要求8所述的一种富文本全文检索及云存储系统,其特征在于,所述云端原文件存储服务模块包括:
将用户上传的文件存储在云端统一管理,确保文件唯一性;云端原文件存储服务模块对文件的修改进行记录,索引的更新将依据对象存储oss的修改;云存储中心将源文件与文件索引分离;
用户上传的文件被系统索引并建立索引文件后,产生的索引文件存储在服务器中,而原文件上传至云端进行存储,云端返回文件地址;系统在进行下载流程时,向对象存储服务器发送文件地址和对应的密钥,对象存储服务器在验证密钥后,根据文件地址,生成文件的下载地址,并将文件的下载地址返回给系统,系统再将文件的下载地址发送给用户;该下载地址具有有效期限,过期后无法进行下载。
10.根据权利要求9所述的一种富文本全文检索及云存储系统,其特征在于,该系统采用B/S架构,前端界面采用React框架构建UI,支持UI页面定制;同时,通过React框架对系统进行维护升级。
CN202210172119.1A 2022-02-24 2022-02-24 一种富文本全文检索及云存储系统 Withdrawn CN114546948A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210172119.1A CN114546948A (zh) 2022-02-24 2022-02-24 一种富文本全文检索及云存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210172119.1A CN114546948A (zh) 2022-02-24 2022-02-24 一种富文本全文检索及云存储系统

Publications (1)

Publication Number Publication Date
CN114546948A true CN114546948A (zh) 2022-05-27

Family

ID=81678381

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210172119.1A Withdrawn CN114546948A (zh) 2022-02-24 2022-02-24 一种富文本全文检索及云存储系统

Country Status (1)

Country Link
CN (1) CN114546948A (zh)

Similar Documents

Publication Publication Date Title
US8417693B2 (en) Enforcing native access control to indexed documents
US20160357860A1 (en) Natural language search results for intent queries
CN111552799B (zh) 信息处理方法、装置、电子设备及存储介质
US20060294192A1 (en) Access control systems and methods using visibility tokens with automatic propagation
Albayrak et al. Agent technology for personalized information filtering: the pia-system
JP2017532626A (ja) インスタントインデックスのための手法を有するマルチユーザの検索システム
KR101672349B1 (ko) 파일 클라우드 서비스 장치 및 방법
CN106294695A (zh) 一种面向实时大数据搜索引擎的实现方法
CN110413738A (zh) 一种信息处理方法、装置、服务器及存储介质
CN113297457B (zh) 一种高精准性的信息资源智能推送系统及推送方法
US9940355B2 (en) Providing answers to questions having both rankable and probabilistic components
CN111552797B (zh) 名称预测模型的训练方法、装置、电子设备及存储介质
CN111767445A (zh) 数据搜索方法、装置、计算机设备和存储介质
CN111552798B (zh) 基于名称预测模型的名称信息处理方法、装置、电子设备
CN111274294A (zh) 一种通用的分布式异构数据一体化逻辑汇聚组织、发布与服务方法及系统
US10789293B2 (en) Automatic search dictionary and user interfaces
US10860697B2 (en) Private content in search engine results
CN113377876B (zh) 基于Domino平台的数据分库处理方法、装置及平台
JP3581009B2 (ja) データ検索システム及びデータ検索方法
CN107357881A (zh) 一种基于新闻数据的中文文本分类系统
JP3702268B2 (ja) 情報検索システム、情報検索方法およびプログラム
CN112136121A (zh) 推荐安全内容
CN114546948A (zh) 一种富文本全文检索及云存储系统
CN111552890B (zh) 基于名称预测模型的名称信息处理方法、装置、电子设备
Filonov et al. A question-answering system for applicant support using modern messaging apps

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20220527