全局搜索方法和装置
文献发布时间:2023-06-19 11:08:20
技术领域
本发明涉及人工智能技术领域,尤其涉及一种全局搜索方法和装置。
背景技术
VuePress是一个基于Vue的静态网站生成器,采用以Markdown为中心的项目结构。每个页面将被预渲染生成静态的HTML,让用户以最少的配置,专注于协作。
VuePress是一个由Vue、Vue Router、webpack驱动的单页应用。在构建时,为应用创建一个服务器渲染SSR的版本,然后通过虚拟访问每一条路径来渲染对应的HTML。主要由两部分组成:第一部分是一个极简静态网站生成器,它包含由Vue驱动的主题系统和插件API,另一个部分是为书写技术文档而优化的默认主题,它的诞生初衷是为了支持Vue及其子项目的文档需求。
每一个由VuePress生成的页面都带有预渲染好的HTML,也因此具有非常好的加载性能和搜索引擎优化。同时,一旦页面被加载,Vue将接管这些静态内容,并将其转换成一个完整的单页应用。
Vuepress全局搜索目前有两种方案:
(1)@vuepress/plugin-search:这是VuePress内置的搜索插件,开箱即用,可基于markdown文件的headers进行搜索。
(2)AlgoliaSearch:Algolia是一个提供云搜索服务的第三方平台。Vuepress可以方便的支持Algolia,只需在themeConfig中设置apiKay和indexName即可。
但是,现有技术存在以下问题:
(1)@vuepress/plugin-search:仅能根据markdown文档中的headers进行搜索,无法实现全部内容的定位与搜索。
(2)Algolia Search:需要去相关平台申请,且公司内网环境无法使用。
发明内容
针对现有技术中的问题,本发明提供一种全局搜索方法和装置、电子设备以及计算机可读存储介质,能够至少部分地解决现有技术中存在的问题。
为了实现上述目的,本发明采用如下技术方案:
第一方面,提供一种全局搜索方法,包括:
获取搜索词条;
基于预设置的全局搜索组件中的搜索逻辑遍历搜索索引文件进行全局搜索并展示搜索结果。
进一步地,全局搜索方法还包括:
获取网站元数据;
根据所述网站元数据生成搜索索引文件;
创建全局搜索组件并设置其搜索逻辑;
利用所述全局搜索组件覆盖主题默认搜索框;
将所述搜索组件与所述搜索索引文件关联。
进一步地,所述搜索逻辑包括:
验证当前用户文档是否有标题;
若无标题,则不进行搜索处理;
若有标题,则获取当前用户文档的标题、文章链接并进行小写化处理,获取当前用户文档的文章内容,去掉文章内容内部的html标签,留下纯内容的字符串;
获取搜索词条在标题中出现的位置数组以及在文章内容中出现的位置数组;
截取两个位置数组中每一个位置序号前后预设位数的长串;
统计搜索词条在所述长串中命中的次数;
根据所述命中次数对标题和文章内容位置数组排序;
将排序后前N个关键字位置加上html标签和样式,并将搜索词条高亮后展示。
进一步地,所述获取网站元数据,包括:
在每个用户文档下添加预设后缀;
对每个用户文档执行渲染输出网站元数据。
进一步地,全局搜索方法还包括:
对多个搜索词条进行预处理以将多个搜索词条均推入搜索关键词数据进行搜索。
第二方面,提供一种全局搜索装置,包括:
搜索词条获取模块,获取搜索词条;
全局搜索模块,基于预设置的全局搜索组件中的搜索逻辑遍历搜索索引文件进行全局搜索并展示搜索结果。
进一步地,全局搜索装置还包括:
网站元数据获取模块,获取网站元数据;
索引文件生成模块,根据所述网站元数据生成搜索索引文件;
组件创建模块,创建全局搜索组件并设置其搜索逻辑;
组件覆盖模块,利用所述全局搜索组件覆盖主题默认搜索框;
关联模块,将所述搜索组件与所述搜索索引文件关联。
进一步地,所述网站元数据获取模块包括:
后缀添加单元,在每个用户文档下添加预设后缀;
渲染单元,对每个用户文档执行渲染输出网站元数据。
第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的全局搜索方法的步骤。
第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的全局搜索方法的步骤。
发明提供的全局搜索方法和装置,适于人工智能领域,该方法包括:获取搜索词条;基于预设置的全局搜索组件中的搜索逻辑遍历搜索索引文件进行全局搜索并展示搜索结果。根据所述网站元数据生成搜索索引文件;创建全局搜索组件并设置其搜索逻辑;利用所述全局搜索组件覆盖主题默认搜索框;将所述搜索组件与所述搜索索引文件关联,通过采用上述技术方案,克服了现用在内网环境中,VuePress无法支持本地全文检索的不足,不依赖于Vuepress本身的主题机制,实现公司内网可用的全文检索。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中的服务器S1与客户端设备B1之间的架构示意图;
图2为本发明实施例中的服务器S1、客户端设备B1及数据库服务器S2之间的架构示意图;
图3是本发明实施例中的全局搜索方法的流程示意图一;
图4是本发明实施例中的全局搜索方法的流程示意图二;
图5是本发明实施例中的全局搜索装置的结构框图一;
图6是本发明实施例中的全局搜索装置的结构框图二;
图7为本发明实施例电子设备的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
现有Vuepress全局搜索方案无法实现全部内容的定位与搜索,或者需要去相关平台申请,且公司内网环境无法使用。
为至少部分解决现有技术中的上述技术问题,本发明实施例提供了一种全局搜索方法和装置,克服了现用在内网环境中,VuePress无法支持本地全文检索的不足,不依赖于Vuepress本身的主题机制,实现公司内网可用的全文检索。
有鉴于此,本申请提供了一种全局搜索装置,该装置可以为一种服务器S1,参见图1,该服务器S1可以与至少一个客户端设备B1通信连接,所述客户端设备B1可以将搜索词条发送至所述服务器S1,所述服务器S1可以在线接收所述搜索词条。所述服务器S1可以在线或者离线对获取的搜索词条进行预处理,基于预设置的全局搜索组件中的搜索逻辑遍历搜索索引文件进行全局搜索并展示搜索结果。而后,所述服务器S1可以将搜索结果在线发送至所述客户端设备B1。所述客户端设备B1可以在线接收所述搜索结果。
另外,参见图2,所述服务器S1还可以与至少一个数据库服务器S2通信连接,所述数据库服务器S2用于存储用户文档。所述数据库服务器S2在线将所述用户文档发送至所述服务器S1,所述服务器S1可以在线接收所述用户文档,而后根据用户文档获取网站元数据;根据所述网站元数据生成搜索索引文件;创建全局搜索组件并设置其搜索逻辑;利用所述全局搜索组件覆盖主题默认搜索框;将所述搜索组件与所述搜索索引文件关联。
可以理解的是,所述客户端设备B1可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(PDA)、车载设备、智能穿戴设备等。其中,所述智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。
在实际应用中,进行全局搜索的部分可以在如上述内容所述的服务器S1侧执行,即,如图1所示的架构,也可以所有的操作都在所述客户端设备B1中完成,且该所述客户端设备B1可以直接与数据库服务器S2进行通信连接。具体可以根据所述客户端设备B1的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在所述客户端设备B1中完成,所述客户端设备B1还可以包括处理器,用于进行全局搜索的具体处理。
所述服务器与所述客户端设备之间可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。所述网络协议例如可以包括TCP/IP协议、UDP/IP协议、HTTP协议、HTTPS协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的RPC协议(Remote Procedure Call Protocol,远程过程调用协议)、REST协议(Representational State Transfer,表述性状态转移协议)等。
图3是本发明实施例中的全局搜索方法的流程示意图一;如图3所示,该全局搜索方法可以包括以下内容:
步骤S100:获取搜索词条;
具体地,搜索词条是由用户输入的,是需要检索的关键词。
步骤S200:基于预设置的全局搜索组件中的搜索逻辑遍历搜索索引文件进行全局搜索并展示搜索结果。
具体地,该全局搜索组件是开发人员预先建立并编辑了搜索逻辑,替换了VuePress中的主题默认搜索框,由于Vuepress本身提供了组件的覆盖机制。只需在theme\components覆盖同名组件即可。
通过采用上述技术方案,实现了对于前端开发者更为友好的文档编写方式,优化了Vuepress的全局检索缺漏,方便内网环境的Vuepress使用者,更好的进行内容检索。
在一个可选的实施例中,参见图4,该全局搜索方法还可以包括:
步骤S300:获取网站元数据;
其中,该步骤S300可以包括以下步骤:
步骤I:在VuePress中每个用户文档下添加预设后缀;
步骤II:对每个用户文档执行渲染输出网站元数据。
具体地,VuePress的Layout组件将会对VuePress中每一个文档目录下的.md文档执行一次渲染以输出网络元数据。一方面可以通过this.$site和this.$page组件获得整个网站以及特定页面的数据,另一方面也可通过siteData变量在主题根目录的enhanceApp.js中获得。此处需注意,若想获得md文档的内部内容,需在每一份md文档下添加<!--more-->后缀,此后缀前的内容将被渲染成html,可在元数据的post.excerpt属性中获得。
步骤S400:根据所述网站元数据生成搜索索引文件;
具体地,可以预先定义好渲染模板,通过enhanceApp.js中的siteData获取网站元数据。创建一个nunjucks渲染环境。通过模板引擎,将网站元数据注入到模板中,生成带数据的检索索引文件,并放到session中,供组件检索逻辑检索。
步骤S500:创建全局搜索组件并设置其搜索逻辑;
具体地,搜索逻辑包括:
验证当前用户文档是否有标题;
若无标题,则不进行搜索处理;
若有标题,则获取当前用户文档的标题、文章链接并进行小写化处理,获取当前用户文档的文章内容,去掉文章内容内部的html标签,留下纯内容的字符串;
获取搜索词条在标题中出现的位置数组以及在文章内容中出现的位置数组;
截取两个位置数组中每一个位置序号前后预设位数的长串;
统计搜索词条在所述长串中命中的次数;
根据所述命中次数对标题和文章内容位置数组排序;
将排序后前N个关键字位置加上html标签和样式,并将搜索词条高亮后展示。
步骤S600:利用所述全局搜索组件覆盖主题默认搜索框;
具体地,Vuepress本身提供了组件的覆盖机制。只需在theme\components覆盖同名组件即可。此处新建了一个搜索组件,并替换Navbar.vue中
自定义搜索组件引用element-ui的
步骤S700:将所述搜索组件与所述搜索索引文件关联。
值得说明的是,在利用搜索组件进行搜索时,对搜索词条进行处理。若有关键词有多个,均推入搜索关键词数组,即:对多个搜索词条进行预处理以将多个搜索词条均推入搜索关键词数据进行搜索。
其中,利用检索逻辑检索索引数据。针对每一篇文章的数据,做匹配处理。包括如下几个步骤:
(1)验证该文章是否有title,若无title,则不做搜索处理
(2)若有title,则获取当前文章数据的title,url进行小写化处理,获取content,去掉内部的html标签,留下纯内容的字符串。供后续检索操作使用。
(3)获取关键字在title中出现的位置数组以及在content中出现的位置数组。
(4)针对这两个数组中每一个position,截取该position前5后95的长串,统计关键字在此长串中命中的次数。根据命中次数对title和content位置数组排序,前后长串中命中次数多的位置排在前面,少的排在后面。从中选择前5个位置信息进行展示。
(5)给筛选出的前5个关键字位置叫上html标签和样式,搜索关键字做高亮处理。返回给:fetch-suggestions的回调函数,在组件下拉框中展示。
基于同一发明构思,本申请实施例还提供了一种全局搜索装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于全局搜索装置解决问题的原理与上述方法相似,因此全局搜索装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图5是本发明实施例中的全局搜索装置的结构框图一。如图5所示,该全局搜索装置具体包括:搜索词条获取模块10、全局搜索模块20、
搜索词条获取模块10获取搜索词条;
全局搜索模块20基于预设置的全局搜索组件中的搜索逻辑遍历搜索索引文件进行全局搜索并展示搜索结果。
通过采用上述技术方案,实现了对于前端开发者更为友好的文档编写方式,优化了Vuepress的全局检索缺漏,方便内网环境的Vuepress使用者,更好的进行内容检索。
在一个可选的实施例中,参见图6,该全局搜索装置还包括:
网站元数据获取模块30,获取网站元数据;
索引文件生成模块40,根据所述网站元数据生成搜索索引文件;
组件创建模块50,创建全局搜索组件并设置其搜索逻辑;
组件覆盖模块60,利用所述全局搜索组件覆盖主题默认搜索框;
关联模块70,将所述搜索组件与所述搜索索引文件关联。
在一个可选的实施例中,所述网站元数据获取模块包括:
后缀添加单元,在VuePress中每个用户文档下添加预设后缀;
渲染单元,对每个用户文档执行渲染输出网站元数据。
上述实施例阐明的装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为电子设备,具体的,电子设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
在一个典型的实例中电子设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的用于VuePress的全局搜索方法的步骤。
下面参考图7,其示出了适于用来实现本申请实施例的电子设备600的结构示意图。
如图7所示,电子设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的用于VuePress的全局搜索方法的步骤。
在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
- 一种基于全局多探测和适应性终止的数据搜索方法和装置
- 结合局部和全局特征的图片搜索方法、装置及电子设备