CN108897819B - 一种数据搜索方法和装置 - Google Patents

一种数据搜索方法和装置 Download PDF

Info

Publication number
CN108897819B
CN108897819B CN201810639013.1A CN201810639013A CN108897819B CN 108897819 B CN108897819 B CN 108897819B CN 201810639013 A CN201810639013 A CN 201810639013A CN 108897819 B CN108897819 B CN 108897819B
Authority
CN
China
Prior art keywords
custom
field
value
query keyword
retrievable
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.)
Active
Application number
CN201810639013.1A
Other languages
English (en)
Other versions
CN108897819A (zh
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.)
Beijing Mijinghefeng Technology Co ltd
Original Assignee
Beijing Mijinghefeng Technology Co ltd
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 Beijing Mijinghefeng Technology Co ltd filed Critical Beijing Mijinghefeng Technology Co ltd
Priority to CN201810639013.1A priority Critical patent/CN108897819B/zh
Publication of CN108897819A publication Critical patent/CN108897819A/zh
Application granted granted Critical
Publication of CN108897819B publication Critical patent/CN108897819B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种数据搜索方法和装置。在检索时对索引中的可检索字段的值进行检索,查找到与检索指令中携带的查询关键词匹配的值,并在判断出与查询关键词匹配的值存在自定义属性时,获取并解析自定义字段,得到与查询关键词匹配的值的自定义属性;其中,该自定义字段为搜索引擎的索引中新建的一自定义字段,该自定义字段中以指定编码方式存储有文档的可检索字段中的所有特定值以及与该特定值对应的自定义属性,并且在进行检索时该自定义字段不会被检索。通过以同一个自定义字段存储不同文档的可检索字段中的所有特定值的自定义属性,并在检索时从该自定义字段动态获取自定义属性,减少索引的空间占用,极大地节省服务器的内存资源。

Description

一种数据搜索方法和装置
技术领域
本发明涉及信息技术领域,特别是一种数据搜索方法、数据搜索装置、计算机存储介质以及计算设备。
背景技术
ElasticSearch是一种基于Lucene框架的开源文档搜索引擎,具有分布式多用户能力,可以快速地储存、搜索和分析海量数据,是当前流行的企业级搜索引擎。将ElasticSearch设计用于云计算中,能够达到实时搜索、高性能计算。目前各全文检索平台和云计算服务平台等广泛使用的是技术成熟的Elasticsearch5.x版本,如Elasticsearch5.2.0、Elasticsearch5.5.3等。
索引是搜索引擎中用于快速检索内容而创建的数据结构。在ElasticSearch中,被写入文档的所有字段的信息都被索引,经过处理后写入到倒排索引(Inverted Index)的数据结构中。一个索引中的每条文档数据行可包含一个或多个可检索字段,每个可检索字段可存储多个值,且该多个值均可被检索。
在很多情况下,针对可检索字段中的特定值,需要额外附带一些自定义属性。Elasticsearch5.x自身提供了文档自定义字段功能。当利用该自定义字段功能来针对可检索字段中的特定值写入一些自定义属性时,需要通过在索引中新增一个与此字段相关的自定义属性字段。例如,可检索字段内容为[TAG1,TAG2],若针对TAG1写入自定义属性,则TAG1对应的自定义属性字段可能叫做TAG1_ATTR。如此,文档中每增加一个自定义属性字段,都会导致整体的索引变大。特别是当不同的文档使用不同的自定义属性字段时,会导致索引叠加放大,造成服务器内存资源的极大浪费。
因此,如何实现在满足文档的数组字段可被检索的需求的前提下,在提供对数组字段中某个特定值附带自定义属性的同时,将索引控制在常量级别以节约资源,成为亟待解决的技术问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的数据搜索方法、数据搜索装置、计算机存储介质以及计算设备。
根据本发明实施例的一方面,提供了一种数据搜索方法,包括:
接收携带有查询关键词的检索指令;
根据所述检索指令对搜索引擎的索引中的可检索字段的值进行检索,查找到与所述查询关键词匹配的值;
判断与所述查询关键词匹配的值是否存在自定义属性;
若是,则获取并解析自定义字段,从所述自定义字段解析得到与所述查询关键词匹配的值的自定义属性;其中,所述自定义字段为所述搜索引擎的索引中新建的一自定义字段,所述自定义字段中以指定编码方式存储有文档的可检索字段中的所有特定值以及与该特定值对应的自定义属性,并且在进行检索时所述自定义字段不会被检索。
可选地,在接收携带有查询关键词的检索指令之前,所述方法还包括:
当所述搜索引擎的客户端向服务器写入文档时,若被写入文档的可检索字段中包含待添加自定义属性的特定值,则按照所述指定编码方式将所述被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性保存在所述自定义字段中。
可选地,所述自定义字段的数据类型包括字符串类型。
可选地,当被写入文档的可检索字段中包含的待添加自定义属性的特定值为一个时,按照所述指定编码方式将所述被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性保存在所述自定义字段中,包括:
采用键-值kv数据结构对所述被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性进行编码,得到指定格式的字符串;
将所述指定格式的字符串保存在所述自定义字段中。
可选地,当被写入文档的可检索字段中包含的待添加自定义属性的特定值为多个时,按照所述指定编码方式将所述被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性保存在所述自定义字段中,包括:
采用键-值kv数据结构对所述被写入文档的可检索字段中的该多个特定值以及与该多个特定值分别对应的自定义属性进行编码,得到指定格式的字符串数组;
将所述指定格式的字符串数组保存在所述自定义字段中。
可选地,判断与所述查询关键词匹配的值是否存在自定义属性,包括:
将与所述查询关键词匹配的值与所述自定义字段中保存的内容进行匹配;
若匹配成功,则判断与所述查询关键词匹配的值存在自定义属性。
可选地,解析自定义字段,从所述自定义字段解析得到与所述查询关键词匹配的值的自定义属性,包括:
调用指定函数对所述自定义字段进行解析;
获取并返回与所述查询关键词匹配的值的自定义属性。
可选地,在解析自定义字段,从所述自定义字段解析得到与所述查询关键词匹配的值的自定义属性之后,所述方法还包括:
根据所述查询关键词、与所述查询关键词匹配的值以及与所述查询关键词匹配的值的自定义属性,按照给定的权重进行加权计算,得到检索命中的文档的查询得分;
根据所述查询得分显示检索命中的文档。
可选地,所述搜索引擎包括Elasticsearch文档搜索引擎。
根据本发明实施例的另一方面,还提供了一种数据搜索装置,包括:
接收模块,适于接收携带有查询关键词的检索指令;
检索模块,适于根据所述检索指令对搜索引擎的索引中的可检索字段的值进行检索,查找到与所述查询关键词匹配的值;
判断模块,适于判断与所述查询关键词匹配的值是否存在自定义属性;
解析模块,适于若所述判断模块判断出与所述查询关键词匹配的值存在自定义属性,则获取并解析自定义字段,从所述自定义字段解析得到与所述查询关键词匹配的值的自定义属性;其中,所述自定义字段为所述搜索引擎的索引中新建的一自定义字段,所述自定义字段中以指定编码方式存储有文档的可检索字段中的所有特定值以及与该特定值对应的自定义属性,并且在进行检索时所述自定义字段不会被检索。
可选地,所述装置还包括:
保存模块,适于在接收携带有查询关键词的检索指令之前,当所述搜索引擎的客户端向服务器写入文档时,若被写入文档的可检索字段中包含待添加自定义属性的特定值,则按照所述指定编码方式将所述被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性保存在所述自定义字段中。可选地,所述自定义字段的数据类型包括字符串类型。
可选地,所述保存模块还适于:
当被写入文档的可检索字段中包含的待添加自定义属性的特定值为一个时,采用键-值kv数据结构对所述被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性进行编码,得到指定格式的字符串;
将所述指定格式的字符串保存在所述自定义字段中。
可选地,所述保存模块还适于:
当被写入文档的可检索字段中包含的待添加自定义属性的特定值为多个时,采用键-值kv数据结构对所述被写入文档的可检索字段中的该多个特定值以及与该多个特定值分别对应的自定义属性进行编码,得到指定格式的字符串数组;
将所述指定格式的字符串数组保存在所述自定义字段中。
可选地,所述判断模块还适于:
将与所述查询关键词匹配的值与所述自定义字段中保存的内容进行匹配;
若匹配成功,则判断与所述查询关键词匹配的值存在自定义属性。
可选地,所述解析模块还适于:
调用指定函数对所述自定义字段进行解析;
获取并返回与所述查询关键词匹配的值的自定义属性。
可选地,所述装置还包括:
加权计算模块,适于在所述解析模块解析自定义字段,从所述自定义字段解析得到与所述查询关键词匹配的值的自定义属性之后,根据所述查询关键词、与所述查询关键词匹配的值以及与所述查询关键词匹配的值的自定义属性,按照给定的权重进行加权计算,得到检索命中的文档的查询得分;以及
显示模块,适于根据所述查询得分显示检索命中的文档。
可选地,所述搜索引擎包括Elasticsearch文档搜索引擎。
根据本发明实施例的再一方面,还提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行根据上文中任一项所述的数据搜索方法。
根据本发明实施例的又一方面,还提供了一种计算设备,包括:
处理器;以及
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行根据上文中任一项所述的数据搜索方法。
本发明实施例提出的数据搜索方法和装置,在接收到携带有查询关键词的检索指令后,对搜索引擎的索引中的可检索字段的值进行检索,查找到与查询关键词匹配的值。进而,当与查询关键词匹配的值存在自定义属性时,获取并解析自定义字段,从该自定义字段得到与查询关键词匹配的值的自定义属性,其中该自定义字段为搜索引擎的索引中新建的一自定义字段,在该字段中以指定编码方式存储有文档的可检索字段中的所有特定值以及与该特定值对应的自定义属性,并且在进行检索时该自定义字段不会被检索。通过以同一个自定义字段存储不同文档的可检索字段中的所有特定值的自定义属性,避免了现有技术中不同的文档使用不同的自定义属性字段而导致索引叠加放大的问题,使索引保持在常量级别,从而增加自定义字段时使用的索引空间不再产生无意义的空间占用,极大地节省了服务器的内存资源。同时,在检索时,通过对该自定义字段进行解析,得到所匹配的特定值的自定义属性,实现动态地获取自定义属性,从而在节省添加自定义属性时索引所占用的服务器内存资源的同时,有效保证了通过被检索值查找到对应的自定义属性,满足文档检索的需求。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一实施例的数据搜索方法的流程图;
图2示出了根据本发明另一实施例的数据搜索方法的流程图;
图3示出了根据本发明一实施例的数据搜索装置的结构示意图;
图4示出了根据本发明另一实施例的数据搜索装置的结构示意图;以及
图5示出了根据本发明又一实施例的数据搜索装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在文档搜索引擎中,为了快速检索内容,会对被写入文档的所有字段的信息进行处理,生成索引。查找数据的时候,可直接查找索引的可检索字段,以快速找到符合要求的文档。被写入文档可以包含有任意个字段(也称为列),则针对每个文档所生成的索引包含了所有文档所包含的字段。举例来说,对于被写入文档D1和D2,若文档D1包含字段F1、F2和F10,文档D2包含字段F3、F4和F11,则对于文档D1和D2中的每一个来说,所生成的索引的空间占用是字段F1、F2、F3、F4、F10和F11的空间占用的总和。
为了能够更加准确地检索到符合要求的目标文档,需要针对可检索字段中的某些特定值添加自定义属性。在现有技术中,如想针对可检索字段中的某个特定值写入自定义属性,通常需要通过新增一个与此字段相关的自定义字段来保存该特定值的自定义属性。如上提及,针对每个文档所生成的索引包含了所有文档所包含的字段,因此,当文档中每增加一个自定义字段都会导致整体的索引变大,特别是当不同的文档使用不同的自定义字段时,索引将会叠加放大。仍以上文提到的文档D1和D2为例,若文档D1采用自定义字段F12来保存可检索字段F1中特定值V1的自定义属性,而文档D2采用自定义字段F13来保存可检索字段F3中的特定值V3的自定义属性,则此时对于文档D1和D2中的每一个来说,索引的空间占用是字段F1、F2、F3、F4、F10、F11、F12和F13的空间占用的总和。可见,增加自定义字段时使用的索引空间产生了大量无意义的空间占用,造成服务器内存空间的极大浪费。
为解决上述技术问题,本发明实施例提出一种数据搜索方法。图1示出了根据本发明一实施例的数据搜索方法的流程图。参见图1,该方法可以包括以下步骤S102至步骤S108。
步骤S102,接收携带有查询关键词的检索指令。
步骤S104,根据检索指令对搜索引擎的索引中的可检索字段的值进行检索,查找到与查询关键词匹配的值。
步骤S106,判断与查询关键词匹配的值是否存在自定义属性。
步骤S108,若与查询关键词匹配的值存在自定义属性,则获取并解析自定义字段,从该自定义字段解析得到与查询关键词匹配的值的自定义属性;其中,该自定义字段为搜索引擎的索引中新建的一自定义字段,该自定义字段中以指定编码方式存储有文档的可检索字段中的所有特定值以及与该特定值对应的自定义属性,并且在进行检索时该自定义字段不会被检索。
本发明实施例提出的数据搜索方法,在接收到携带有查询关键词的检索指令后,对搜索引擎的索引中的可检索字段的值进行检索,查找到与查询关键词匹配的值。进而,当与查询关键词匹配的值存在自定义属性时,获取并解析自定义字段,从该自定义字段得到与查询关键词匹配的值的自定义属性,其中该自定义字段为搜索引擎的索引中新建的一自定义字段,在该字段中以指定编码方式存储有文档的可检索字段中的所有特定值以及与该特定值对应的自定义属性,并且在进行检索时该自定义字段不会被检索。通过以同一个自定义字段存储不同文档的可检索字段中的所有特定值的自定义属性,避免了现有技术中不同的文档使用不同的自定义属性字段而导致索引叠加放大的问题,使索引保持在常量级别,从而增加自定义字段时使用的索引空间不再产生无意义的空间占用,极大地节省了服务器的内存资源。同时,在检索时,通过对该自定义字段进行解析,得到所匹配的特定值的自定义属性,实现动态地获取自定义属性,从而在节省添加自定义属性时索引所占用的服务器内存资源的同时,有效保证了通过被检索值查找到对应的自定义属性,满足文档检索的需求。
在本发明的可选实施例中,在上文步骤S102之前,当搜索引擎的客户端向服务器写入文档时,若被写入文档的可检索字段中包含待添加自定义属性的特定值,则按照指定编码方式将被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性保存在该自定义字段中,从而实现自定义属性的动态添加。可选地,该自定义字段可以具有一指定名称,例如,可以将该自定义字段命名为attr。需要说明的是,此处举例的命名名称仅为示意性的,并不构成对本发明的限制,本领域技术人员可以理解,该自定义字段可以命名为与其他可检索字段的名称相区别的任意名称。
在本发明的可选实施例中,若步骤S106判断与查询关键词匹配的值不存在自定义属性,则可以结束本次流程,也可以直接将与查询关键词匹配的值返回给用户。
进一步地,该自定义字段的数据类型包括字符串类型,从而该自定义字段可用于存储特定值及其对应的自定义属性按指定格式组合而成的字符串。
在本发明的可选实施例中,当被写入文档的可检索字段中包含的待添加自定义属性的特定值为一个时,可采用kv(key-value,键-值)数据结构对被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性进行编码,得到指定格式的字符串,然后将该指定格式的字符串保存在该自定义字段中。
当被写入文档的可检索字段中包含的待添加自定义属性的特定值为多个时,则可采用kv数据结构对被写入文档的可检索字段中的该多个特定值以及与该多个特定值分别对应的自定义属性进行编码,得到指定格式的字符串数组,然后将该指定格式的字符串数组保存在该自定义字段中。
上文提及的kv数据结构是一种通过一个标识符映射一个值的数据结构,也称为键-值数据结构。在本发明中,“键”为自定义属性中的属性名称,“值”为与该属性名称对应的属性值。
下面通过举例对写入文档时动态添加自定义属性的操作进行说明。
假设文档D3包含可检索字段tag,字段tag中包含两个值A和B。写入文档D3时需对字段tag中的值A增加自定义属性:x=10,y=2.2。文档D4也包含可检索字段tag,字段tag中包含两个值C和D。文档D4还包含可检索字段author,字段author中包含一个值“张三”。写入文档D4时需对字段tag中的值C增加自定义属性:z=100,还需对字段author中的值“张三”增加自定义属性:k=现代。
根据本发明实施例的方案,首先在索引中新建一自定义字段,用于存储待保存文档的可检索字段中的特定值的自定义属性。在本例中,该自定义字段命名为attr。
然后,当客户端向服务器写入文档D3时,采用kv数据结构对文档D3的可检索字段tag中的值A以及与A对应的自定义属性x=10,y=2.2进行编码,得到以下划线为分隔符的字符串"A_x_10_y_2.2",再将该字符串保存在自定义字段attr中,其中,x和y为kv数据结构中的键,10和2.2则为kv数据结构中与键x和y分别对应的值。具体地,写入文档D3的格式如下所示:
Figure GDA0001957007600000081
当客户端向服务器写入文档D4时,采用kv数据结构对文档D4的可检索字段tag中的值C和与C对应的自定义属性z=100,以及可检索字段author中的值“张三”和与值“张三”对应的自定义属性“k=现代”进行编码,得到由以下划线为分隔符的字符串组成的字符串数组["C_z_100","张三_k_现代"],再将该字符串数组保存在自定义字段attr中,其中,z和k为kv数据结构中的键,100和“现代”则为kv数据结构中与键z和k分别对应的值。具体地,写入文档D4的格式如下所示:
Figure GDA0001957007600000091
需要说明的是,以上例子中举出的采用kv数据结构对特定值以及其对应的自定义属性进行编码的方式仅是本发明中优选的一种方式。但本发明并不限于此,而是还可以选择其他多种数据结构,例如json,进行编码。
在本发明的可选实施例中,在按照指定编码方式将被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性保存在自定义字段中之后,执行步骤S102和S104进行检索,查找到与检索指令中携带的查询关键词匹配的值。
然后,执行步骤S106,判断与查询关键词匹配的值是否存在自定义属性。
在一种具体的实施方式中,可以将与查询关键词匹配的值与该自定义字段中保存的内容(例如,上文提及的指定格式的字符串或字符串数组)进行匹配,若匹配成功,则判断与查询关键词匹配的值存在自定义属性。
最后,执行步骤S108,若判断出与查询关键词匹配的值是存在自定义属性,则获取并解析该自定义字段,从该自定义字段解析得到与查询关键词匹配的值的自定义属性,从而实现自定义属性的动态获取。
在一种具体的实施方式中,可以调用指定函数对该自定义字段进行解析,获取并返回与查询关键词匹配的值的自定义属性。
下面仍以上文的文档D3和D4为例,对检索时动态获取自定义属性进行说明。
当检索条件为tag=A时,在搜索引擎接收到携带有查询关键词的检索指令后,根据查询关键词对索引中的可检索字段tag中的值进行检索,查找到与查询关键词匹配的值A。然后,将值A与自定义字段attr中的字符串"A_x_10_y_2.2"进行匹配,并判断出值A存在自定义属性。最后,调用parseCustomAttr函数,将值A和自定义字段attr的值"A_x_10_y_2.2"传递给parseCustomAttr函数,通过parseCustomAttr函数解析自定义字段attr的内容,得到与值A对应的自定义属性x=10,y=2.2,并将该自定义属性返回给检索程序以用于后续操作,从而实现了动态地获取特定值对应的自定义属性的kv数据。
以下列出了通过调用parseCustomAttr函数对自定义字段attr进行解析,获取并返回可检索字段tag中的特定值A的自定义属性的kv数据的一段程序代码。
Figure GDA0001957007600000101
需要说明的是,以上列出的解析程序代码仅是示意性的,其针对保存在自定义字段中,采用kv数据结构对特定值以及其对应的自定义属性进行编码得到的以下划线为分隔符的字符串或字符串数组进行解析。本领域技术人员可以理解,在采用其他数据结构(例如json)对自定义字段进行编码的情况下,可以相应地采用其他方式对自定义字段进行解析,以动态获取特定值的自定义属性。
在本发明的可选实施例中,在执行步骤S108,得到与查询关键词匹配的值的自定义属性之后,该方法还可以包括以下步骤:
首先,根据查询关键词、与查询关键词匹配的值以及与查询关键词匹配的值的自定义属性,按照给定的权重进行加权计算,得到检索命中的文档的查询得分。
然后,根据查询得分显示检索命中的文档。
在本发明的可选实施例中,搜索引擎包括Elasticsearch文档搜索引擎。
以上介绍了图1所示实施例的各个环节的多种实现方式,下面将通过具体实施例来详细介绍本发明的在搜索引擎中实现动态添加自定义属性的方法的实现过程。
在本发明的具体实施例中,搜索引擎为Elasticsearch文档搜索引擎。图2示出了根据本发明又一实施例的数据搜索方法的流程图。参见图2,该方法至少可以包括步骤S202至步骤S214。
步骤S202,当Elasticsearch文档搜索引擎的客户端向服务器写入文档时,若被写入文档的可检索字段中包含待添加自定义属性的一个或多个特定值,则采用kv数据结构对被写入文档的可检索字段中的该一个或多个特定值以及与该一个或多个特定值对应的自定义属性进行编码,得到指定格式的字符串或字符串数组,并将该字符串或字符串数组保存在一自定义字段attr中,其中,自定义字段attr为Elasticsearch文档搜索引擎的索引中新建的字段,并且在进行检索时自定义字段attr不会被检索。
步骤S204,接收携带有查询关键词的检索指令。
步骤S206,根据检索指令对索引中的可检索字段的值进行检索,查找到与查询关键词匹配的值。
步骤S208,将与查询关键词匹配的值与自定义字段attr中保存的字符串或字符串数组进行匹配,若匹配成功,则判断与查询关键词匹配的值存在自定义属性。
步骤S210,若判断出与查询关键词匹配的值是存在自定义属性,则调用parseCustomAttr函数对自定义字段attr进行解析,获取并返回与查询关键词匹配的值的自定义属性的kv数据,从而实现自定义属性的动态获取。
步骤S212,根据查询关键词、与查询关键词匹配的值以及与查询关键词匹配的值的自定义属性的kv数据,按照给定的权重进行加权计算,得到检索命中的文档的查询得分。
步骤S214,根据查询得分显示检索命中的文档。
本实施例实现了在同一个自定义字段中动态地添加不同特定值的自定义属性。由于在写入文档时,所有不同的文档均使用同一个新建的自定义字段进行自定义属性的存储,避免了不同的文档使用不同的自定义属性字段而导致索引叠加放大的问题,使索引保持在常量级别,从而增加自定义字段时使用的索引空间不再产生无意义的空间占用,极大地节省了服务器的内存资源。
进一步地,在添加一个或多个特定值的自定义属性时,采用指定的kv数据结构对该一个或多个特定值以及与该一个或多个特定值对应的自定义属性进行编码,得到指定格式的字符串或字符串数组,然后将该字符串或字符串数组保存在该自定义字段中。进而,在检索时,若检索条件与索引中的可检索字段的特定值匹配成功,则对该自定义字段进行解析,得到所匹配的特定值的自定义属性的kv数据,从而实现动态地获取自定义属性,用于后续的加权计算。通过自定义属性的动态添加和获取,在节省添加自定义属性时索引所占用的服务器内存资源的同时,有效保证了通过被检索值查找到对应的自定义属性,满足文档检索的需求。
需要说明的是,实际应用中,上述所有可选实施方式可以采用结合的方式任意组合,形成本发明的可选实施例,在此不再一一赘述。
基于同一发明构思,本发明实施例还提供了一种数据搜索装置,用于支持上述任意一个实施例或其组合所提供的数据搜索方法。图3示出了根据本发明一实施例的数据搜索装置的结构示意图。参见图3,该装置至少可以包括:接收模块310、检索模块320、判断模块330和解析模块340。
现介绍本发明实施例的数据搜索装置的各组成或器件的功能以及各部分间的连接关系:
接收模块310,适于接收携带有查询关键词的检索指令。
检索模块320,适于根据检索指令对搜索引擎的索引中的可检索字段的值进行检索,查找到与查询关键词匹配的值。
判断模块330,适于判断与查询关键词匹配的值是否存在自定义属性。
解析模块340,适于若判断出与查询关键词匹配的值存在自定义属性,则获取并解析自定义字段,从该自定义字段解析得到与查询关键词匹配的值的自定义属性。该自定义字段为搜索引擎的索引中新建的一自定义字段,可具有一指定名称。在该自定义字段中以指定编码方式存储有文档的可检索字段中的所有特定值以及与该特定值对应的自定义属性,并且在进行检索时该自定义字段不会被检索。
在一个可选实施例中,该自定义字段的数据类型包括字符串类型。
在一个可选实施例中,判断模块330还适于:
将与查询关键词匹配的值与该自定义字段中保存的内容进行匹配;
若匹配成功,则判断与查询关键词匹配的值存在自定义属性。
在一个可选实施例中,解析模块340还适于:
调用指定函数对该自定义字段进行解析;
获取并返回与查询关键词匹配的值的自定义属性。
根据本发明的另一实施例中,如图4所示,图3中展示的数据搜索装置还可以包括:
保存模块450,适于在接收携带有查询关键词的检索指令之前,当搜索引擎的客户端向服务器写入文档时,若被写入文档的可检索字段中包含待添加自定义属性的特定值,则按照指定编码方式将被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性保存在该自定义字段中。
在一个可选实施例中,保存模块450还适于:
当被写入文档的可检索字段中包含的待添加自定义属性的特定值为一个时,采用kv数据结构对被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性进行编码,得到指定格式的字符串;
将指定格式的字符串保存在该自定义字段中。
在一个可选实施例中,保存模块450还适于:
当被写入文档的可检索字段中包含的待添加自定义属性的特定值为多个时,采用kv数据结构对被写入文档的可检索字段中的该多个特定值以及与该多个特定值分别对应的自定义属性进行编码,得到指定格式的字符串数组;
将指定格式的字符串数组保存在该自定义字段中。
根据本发明的又一实施例中,如图5所示,图3中展示的数据搜索装置还可以包括:
加权计算模块560,适于在解析模块340解析自定义字段,从该自定义字段解析得到与查询关键词匹配的值的自定义属性之后,根据查询关键词、与查询关键词匹配的值以及与查询关键词匹配的值的自定义属性,按照给定的权重进行加权计算,得到检索命中的文档的查询得分;以及
显示模块570,适于根据查询得分显示检索命中的文档。
在一个可选实施例中,上述搜索引擎包括Elasticsearch文档搜索引擎。
基于同一发明构思,本发明实施例还提供了一种计算机存储介质。该计算机存储介质存储有计算机程序代码,当该计算机程序代码在计算设备上运行时,导致计算设备执行根据上述任意一个实施例或其组合所述的数据搜索方法。
基于同一发明构思,本发明实施例还提供了一种计算设备。该计算设备可以包括:
处理器;以及
存储有计算机程序代码的存储器;
当该计算机程序代码被处理器运行时,导致该计算设备执行根据上述任意一个实施例或其组合所述的数据搜索方法。
根据上述任意一个可选实施例或多个可选实施例的组合,本发明实施例能够达到如下有益效果:
本发明实施例提出的数据搜索方法,在接收到携带有查询关键词的检索指令后,对搜索引擎的索引中的可检索字段的值进行检索,查找到与查询关键词匹配的值。进而,当与查询关键词匹配的值存在自定义属性时,获取并解析自定义字段,从该自定义字段得到与查询关键词匹配的值的自定义属性,其中该自定义字段为搜索引擎的索引中新建的一自定义字段,在该字段中以指定编码方式存储有文档的可检索字段中的所有特定值以及与该特定值对应的自定义属性,并且在进行检索时该自定义字段不会被检索。通过以同一个自定义字段存储不同文档的可检索字段中的所有特定值的自定义属性,避免了现有技术中不同的文档使用不同的自定义属性字段而导致索引叠加放大的问题,使索引保持在常量级别,从而增加自定义字段时使用的索引空间不再产生无意义的空间占用,极大地节省了服务器的内存资源。同时,在检索时,通过对该自定义字段进行解析,得到所匹配的特定值的自定义属性,实现动态地获取自定义属性,从而在节省添加自定义属性时索引所占用的服务器内存资源的同时,有效保证了通过被检索值查找到对应的自定义属性,满足文档检索的需求。
所属领域的技术人员可以清楚地了解到,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,为简洁起见,在此不另赘述。
另外,在本发明各个实施例中的各功能单元可以物理上相互独立,也可以两个或两个以上功能单元集成在一起,还可以全部功能单元都集成在一个处理单元中。上述集成的功能单元既可以采用硬件的形式实现,也可以采用软件或者固件的形式实现。
本领域普通技术人员可以理解:所述集成的功能单元如果以软件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,其包括若干指令,用以使得一台计算设备(例如个人计算机,服务器,或者网络设备等)在运行所述指令时执行本发明各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM),磁碟或者光盘等各种可以存储程序代码的介质。
或者,实现前述方法实施例的全部或部分步骤可以通过程序指令相关的硬件(诸如个人计算机,服务器,或者网络设备等的计算设备)来完成,所述程序指令可以存储于一计算机可读取存储介质中,当所述程序指令被计算设备的处理器执行时,所述计算设备执行本发明各实施例所述方法的全部或部分步骤。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:在本发明的精神和原则之内,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案脱离本发明的保护范围。

Claims (18)

1.一种数据搜索方法,包括:
接收携带有查询关键词的检索指令;
根据所述检索指令对搜索引擎的索引中的可检索字段的值进行检索,查找到与所述查询关键词匹配的值;
判断与所述查询关键词匹配的值是否存在自定义属性;
若是,则获取并解析自定义字段,从所述自定义字段解析得到与所述查询关键词匹配的值的自定义属性;其中,所述自定义字段为所述搜索引擎的索引中新建的一自定义字段,所述自定义字段中以指定编码方式存储有文档的可检索字段中的所有特定值以及与该特定值对应的自定义属性,并且在进行检索时所述自定义字段不会被检索;
其中,在接收携带有查询关键词的检索指令之前,所述方法还包括:
当所述搜索引擎的客户端向服务器写入文档时,若被写入文档的可检索字段中包含待添加自定义属性的特定值,则按照所述指定编码方式将所述被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性保存在所述自定义字段中。
2.根据权利要求1所述的方法,其中,所述自定义字段的数据类型包括字符串类型。
3.根据权利要求2所述的方法,其中,当被写入文档的可检索字段中包含的待添加自定义属性的特定值为一个时,按照所述指定编码方式将所述被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性保存在所述自定义字段中,包括:
采用键-值kv数据结构对所述被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性进行编码,得到指定格式的字符串;
将所述指定格式的字符串保存在所述自定义字段中。
4.根据权利要求2所述的方法,其中,当被写入文档的可检索字段中包含的待添加自定义属性的特定值为多个时,按照所述指定编码方式将所述被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性保存在所述自定义字段中,包括:
采用键-值kv数据结构对所述被写入文档的可检索字段中的该多个特定值以及与该多个特定值分别对应的自定义属性进行编码,得到指定格式的字符串数组;
将所述指定格式的字符串数组保存在所述自定义字段中。
5.根据权利要求1所述的方法,其中,判断与所述查询关键词匹配的值是否存在自定义属性,包括:
将与所述查询关键词匹配的值与所述自定义字段中保存的内容进行匹配;
若匹配成功,则判断与所述查询关键词匹配的值存在自定义属性。
6.根据权利要求1所述的方法,其中,解析自定义字段,从所述自定义字段解析得到与所述查询关键词匹配的值的自定义属性,包括:
调用指定函数对所述自定义字段进行解析;
获取并返回与所述查询关键词匹配的值的自定义属性。
7.根据权利要求1所述的方法,其中,在解析自定义字段,从所述自定义字段解析得到与所述查询关键词匹配的值的自定义属性之后,所述方法还包括:
根据所述查询关键词、与所述查询关键词匹配的值以及与所述查询关键词匹配的值的自定义属性,按照给定的权重进行加权计算,得到检索命中的文档的查询得分;
根据所述查询得分显示检索命中的文档。
8.根据权利要求1-7中任一项所述的方法,其中,所述搜索引擎包括Elasticsearch文档搜索引擎。
9.一种数据搜索装置,包括:
接收模块,适于接收携带有查询关键词的检索指令;
检索模块,适于根据所述检索指令对搜索引擎的索引中的可检索字段的值进行检索,查找到与所述查询关键词匹配的值;
判断模块,适于判断与所述查询关键词匹配的值是否存在自定义属性;
解析模块,适于若所述判断模块判断出与所述查询关键词匹配的值存在自定义属性,则获取并解析自定义字段,从所述自定义字段解析得到与所述查询关键词匹配的值的自定义属性;其中,所述自定义字段为所述搜索引擎的索引中新建的一自定义字段,所述自定义字段中以指定编码方式存储有文档的可检索字段中的所有特定值以及与该特定值对应的自定义属性,并且在进行检索时所述自定义字段不会被检索;
其中,所述装置还包括:
保存模块,适于在接收携带有查询关键词的检索指令之前,当所述搜索引擎的客户端向服务器写入文档时,若被写入文档的可检索字段中包含待添加自定义属性的特定值,则按照所述指定编码方式将所述被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性保存在所述自定义字段中。
10.根据权利要求9所述的装置,其中,所述自定义字段的数据类型包括字符串类型。
11.根据权利要求10所述的装置,其中,所述保存模块还适于:
当被写入文档的可检索字段中包含的待添加自定义属性的特定值为一个时,采用键-值kv数据结构对所述被写入文档的可检索字段中的该特定值以及与该特定值对应的自定义属性进行编码,得到指定格式的字符串;
将所述指定格式的字符串保存在所述自定义字段中。
12.根据权利要求10所述的装置,其中,所述保存模块还适于:
当被写入文档的可检索字段中包含的待添加自定义属性的特定值为多个时,采用键-值kv数据结构对所述被写入文档的可检索字段中的该多个特定值以及与该多个特定值分别对应的自定义属性进行编码,得到指定格式的字符串数组;
将所述指定格式的字符串数组保存在所述自定义字段中。
13.根据权利要求9所述的装置,其中,所述判断模块还适于:
将与所述查询关键词匹配的值与所述自定义字段中保存的内容进行匹配;
若匹配成功,则判断与所述查询关键词匹配的值存在自定义属性。
14.根据权利要求9所述的装置,其中,所述解析模块还适于:
调用指定函数对所述自定义字段进行解析;
获取并返回与所述查询关键词匹配的值的自定义属性。
15.根据权利要求9所述的装置,其中,还包括:
加权计算模块,适于在所述解析模块解析自定义字段,从所述自定义字段解析得到与所述查询关键词匹配的值的自定义属性之后,根据所述查询关键词、与所述查询关键词匹配的值以及与所述查询关键词匹配的值的自定义属性,按照给定的权重进行加权计算,得到检索命中的文档的查询得分;以及
显示模块,适于根据所述查询得分显示检索命中的文档。
16.根据权利要求9-15中任一项所述的装置,其中,所述搜索引擎包括Elasticsearch文档搜索引擎。
17.一种计算机存储介质,所述计算机存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行根据权利要求1-8中任一项所述的数据搜索方法。
18.一种计算设备,包括:
处理器;以及
存储有计算机程序代码的存储器;
当所述计算机程序代码被所述处理器运行时,导致所述计算设备执行根据权利要求1-8中任一项所述的数据搜索方法。
CN201810639013.1A 2018-06-20 2018-06-20 一种数据搜索方法和装置 Active CN108897819B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810639013.1A CN108897819B (zh) 2018-06-20 2018-06-20 一种数据搜索方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810639013.1A CN108897819B (zh) 2018-06-20 2018-06-20 一种数据搜索方法和装置

Publications (2)

Publication Number Publication Date
CN108897819A CN108897819A (zh) 2018-11-27
CN108897819B true CN108897819B (zh) 2021-09-21

Family

ID=64345599

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810639013.1A Active CN108897819B (zh) 2018-06-20 2018-06-20 一种数据搜索方法和装置

Country Status (1)

Country Link
CN (1) CN108897819B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111191057A (zh) * 2019-12-17 2020-05-22 贝壳技术有限公司 一种自定义检索方法、装置、电子设备及其存储介质
CN112182404B (zh) * 2020-10-23 2023-08-11 网易(杭州)网络有限公司 问题查询方法、装置、设备及存储介质
CN112417085A (zh) * 2020-11-27 2021-02-26 平安普惠企业管理有限公司 报文对比方法、装置、计算机设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102024054A (zh) * 2010-12-10 2011-04-20 中国科学院软件研究所 一种面向密文云存储的文档检索方法与***
CN103294714A (zh) * 2012-02-28 2013-09-11 阿里巴巴集团控股有限公司 索引字段的字段属性值的存储位置的确定方法以及装置
CN105608227A (zh) * 2016-01-26 2016-05-25 唐山新质点科技有限公司 文档数据检索方法及装置
CN106776878A (zh) * 2016-11-29 2017-05-31 西安交通大学 一种基于ElasticSearch对MOOC课程进行分面检索的方法
CN107145493A (zh) * 2016-03-01 2017-09-08 阿里巴巴集团控股有限公司 信息处理方法及装置
CN107330057A (zh) * 2017-06-29 2017-11-07 哈尔滨工程大学科技园发展有限公司 一种ElasticSearch搜索相关度算法优化方法及***
CN107451280A (zh) * 2017-08-07 2017-12-08 北京小度信息科技有限公司 数据打通方法、装置及电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180189909A1 (en) * 2016-12-30 2018-07-05 At&T Intellectual Property I, L.P. Patentability search and analysis

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102024054A (zh) * 2010-12-10 2011-04-20 中国科学院软件研究所 一种面向密文云存储的文档检索方法与***
CN103294714A (zh) * 2012-02-28 2013-09-11 阿里巴巴集团控股有限公司 索引字段的字段属性值的存储位置的确定方法以及装置
CN105608227A (zh) * 2016-01-26 2016-05-25 唐山新质点科技有限公司 文档数据检索方法及装置
CN107145493A (zh) * 2016-03-01 2017-09-08 阿里巴巴集团控股有限公司 信息处理方法及装置
CN106776878A (zh) * 2016-11-29 2017-05-31 西安交通大学 一种基于ElasticSearch对MOOC课程进行分面检索的方法
CN107330057A (zh) * 2017-06-29 2017-11-07 哈尔滨工程大学科技园发展有限公司 一种ElasticSearch搜索相关度算法优化方法及***
CN107451280A (zh) * 2017-08-07 2017-12-08 北京小度信息科技有限公司 数据打通方法、装置及电子设备

Also Published As

Publication number Publication date
CN108897819A (zh) 2018-11-27

Similar Documents

Publication Publication Date Title
US10565273B2 (en) Tenantization of search result ranking
US9418144B2 (en) Similar document detection and electronic discovery
US9710517B2 (en) Data record compression with progressive and/or selective decomposition
US20240070177A1 (en) Systems and methods for generating and using aggregated search indices and non-aggregated value storage
CN109885773B (zh) 一种文章个性化推荐方法、***、介质及设备
US20210182328A1 (en) System and method for hierarchically organizing documents based on document portions
KR101479040B1 (ko) 태그들을 문서에 자동으로 추가하는 방법, 장치 및 컴퓨터 저장 매체
US11449564B2 (en) System and method for searching based on text blocks and associated search operators
CN103136228A (zh) 一种图片搜索方法以及图片搜索装置
CN108897819B (zh) 一种数据搜索方法和装置
CN111752955A (zh) 数据处理方法、装置、设备及计算机可读存储介质
EP3301603A1 (en) Improved search for data loss prevention
US11520763B2 (en) Automated optimization for in-memory data structures of column store databases
JP7293780B2 (ja) 情報処理装置、文書管理システム及びプログラム
CN115952800A (zh) 命名实体识别方法、装置、计算机设备及可读存储介质
CN116226515A (zh) 一种搜索结果排序方法、装置、电子设备和存储介质
US10810236B1 (en) Indexing data in information retrieval systems
KR102062139B1 (ko) 지능형 자료구조 기반의 데이터 처리 방법 및 그를 위한 장치
CN108463816A (zh) 通过使用自动变体检测来防止禁止网络内容的分发
US9122748B2 (en) Matching documents against monitors
CN117688140B (zh) 文档查询方法、装置、计算机设备和存储介质
US20240220528A1 (en) System and method for generating ontologies for enhanced search
CN116127098A (zh) 知识图谱的构建方法、装置
CN116975202A (zh) 文档检索方法、装置、设备及存储介质
CN115221264A (zh) 一种文本处理方法、装置及可读存储介质

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
GR01 Patent grant
GR01 Patent grant