-gMIS 部署和应用的场景愈来愈多,最近在考虑为全部gMIS承载管理的数据库系统增长一个站内搜索功能, +InSiteSearch 。前因是在 2017年11月份的更新中,咱们设想“层级目录导航是“传统”的,属于 Yahoo 时代的产物,将来的导航应该是 Google 式的智能导航。
将来拟开发一个 gMIS 域内全文搜索引擎,这样用户就无需使用或者记录层级目录。” (-R/p2SM)。 约半年后,咱们实现了这方面的一个探索。php
主要动机能够类比为Yahoo时代的目录搜索与Google时代的全文检索,当 -gMIS 所管理的对象超过必定数量级后,管理人员面临的问题就天然而然地迷失在多层复杂的目录式的导航中,如何有效地定位到目标功能模块成为迫切须要解决的问题。(在Google出现以前,用户想找某个主题/关键词的内容,须要去Yahoo的站点目录里去逐层逐级的查找相应的站点,Yahoo提供的网站目录知足了当时的需求)git
站内搜索也被称之为局域网搜索Intranet search /Onsite search有别于互联网搜索Internet search. 其目的是搜索网址内部一般不公开的,格式化或者非格式化的内容。github
格式化数据的搜索是一个老课题。相对于非格式化数据,好比常见的网页数据,格式化数据有得天独厚的优点,咱们能确切的预先知道,数据的格式、类型与规模。
在得到这些以后又该怎样实现站内搜索呢?
大体有两个思路,列以下。数据库
一是将待搜索的数据,读取到某个index service上实现对数据的indexing,当有某种关键词进行搜索时,按indexing的数据进行相应数据的返回。
这种方式,是事先、同步地将全部格式化数据同步到indexing 服务,并实现相应的增删改的操做同步。
也即,在格式化数据库/表以外,须要独立的创建一套应对全文搜索的数据结构存储系统,一般为 keyword–>pagelist 结构,也即某个待搜索关键词会对应一个包含该关键词的文档列表,其中列表的排序规则为某个权重值,其主要指标是为了表名当前关键词与当前文档的依存关系。
若无心外,该indexing的数据存储结果将同等尺寸于原始格式化数据。
另一种思路,也即,是否能够为待搜索的数据提供某种roadmap(路书、地图),当有某种关键词进行搜索时,知道在什么地方以什么方式进行搜索。而实际数据的增删改人保留在原数据库/表中,当下的站内搜索InSiteSearch只是提供某种ShortCut服务,该服务可以实现以较为经济的、智能的方式,帮助调用者以较合理地方式返回预期的搜索内容。
能够设想,在这种思路下,系统不须要建立一套indexing服务,也不须要额外地复制所有格式化数据副本做为待检索的对象。
也即,当触发在全域进行某个关键词进行搜索时,InSiteSearch知道该关键词最可能出如今某些数据表的数据字段项上,而不太可能出如今其余字段项或者其余数据表相应的字段项上。
这种路书(地图)导引式的搜索辅助设施,将极大地提高搜索范围和搜索精度,在格式化数据的搜索上,很好的契合了搜索需求的应用场景。数据结构
两相比较,在 -gMIS 中,咱们选用了,基于路书的指引式站内搜索方式。app
依据前述讨论,咱们在 -gMIS 中实现了基于导引式地站内搜索实现。其主要操做内容以下。
A. 建立 insitesearch 表
用于存储当有基于某个关键词进行搜索时,所依赖的数据表路径。
insitesearch表的生成主要依赖 /act/insitesearchsort.php 程序。
该程序读取当前数据库链接下的全部数据表,并分析每一个数据表的每一个字段,若是发现当前字段数据可被检索字符串类型,一般为char(4-255),则将该数据库、数据表的数据字段记为待检索字段。
以此循环全部数据表的全部数据字段,生成待检索数据字段列表。
当有待搜索关键词递交到系统程序时, /extra/insitesearch.php , 站内搜索引擎程序按图索骥地逐个待搜索数据库、数据表、数据字段的进行检索。
根据当前页的size设置,搜索到N个结果时,自动返回给调用者,以此造成翻页功能。异步
B. 增长站内搜索入口
对应地,咱们在 进入系统主页和list view识图页面,在顶部导航栏增长了对 站内搜索 的接入功能,若用户须要进行站全域站内搜索,只需将待搜索关键词递交给搜索模块便可实现该功能。
优化
C. 动态更新搜索源
辅助地,咱们在 网站
Π 首页 → 桌面 & 系统配置 → 搜索源配置 | 搜索源配置 |
增长了对 搜索源的配置与管理,在该模块能够实现对待搜索列表的手工更新与配置。当有新的数据模块被手工添加到当前数据库时,能够经过 “更新搜索源列表” 来实现对待搜索资源列表的更新与维护。ui
D. 精细化操做的黑白名单设置
一样地,咱们在
Π 首页 → 桌面 & 系统配置 → 搜索源黑白名单 | 搜索源黑白名单 |
额外地增长了对待搜索源的黑白名单设置,以知足特性的运营需求,好比当某个数据库的数据表的数据字段被程序规则断定为“黑名单”时,能够在此将相应的条件设置为容许“白名单”;一样地,当某个数据库的数据表的字段被程序判断为“白名单”而经过系统检测,能够在此将相应条件设置为“黑名单”,以阻止其进入待搜索队列。
-gMIS 是一种基于 -GWA2 的通用管理信息系统(Management Information System)软件,具备可配置的输入和输出接口。
能够在其上构建各类管理应用软件系统,如
内容管理系统(CMS),客户资源管理(CRM), 企业资源计划管理(ERP),
办公自动化系统(OA)等, 以及各类行业应用管理系统软件,如
人力资源管理系统(HR),学生管理,档案管理,旅游管理,图书管理,
商品管理及业务运营支撑系统等等。
实现零代码开发、快速搭建各类管理信息系统(MIS).
-gMIS is a -GWA2 based Management Information System (MIS) software with configurable input and output interfaces.
Various management application software systems can be built on it, such as
Content Management System (CMS), Customer Resource Management (CRM), Enterprise Resource Planning Management (ERP),
Office automation systems (OA), as well as different industry application management system softwares, such as
Human Resource Management System (HR), Student Management, Archive Management, Tourism Management, Book Management,
Commodity management and business operations support systems, etc.
With zero code development, -gMIS can build a set of management information systems (MIS) software in a minute.
Lower Costs, Better Productivity.
下降成本, 提升效率.