一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种表达式检索转换为Elasticsearch搜索语句的方法及系统与流程

2022-07-02 14:13:36 来源:中国专利 TAG:

一种表达式检索转换为elasticsearch搜索语句的方法及系统
技术领域
1.本发明涉及到搜索引擎领域,特别涉及到一种表达式检索转换为elasticsearch搜索语句的方法及系统。


背景技术:

2.数据的爆发增长,对搜索提出了更多的需求。在众多要求中,搜索响应快、结果精准是最基础也最为关心的要求。在快方面,有众多的底层搜索引擎提供了良好的解决方案,其中开源的solr和elasticsearch,为搜索领域做出了重要贡献。大多数情况下,在将快的要求交给开源引擎后,另一被关注的是如何更好利用搜索引擎来获取更为准确的结果。一方面,结合机器学习方法,更好的理解用户的搜索关键字,学习关键字、用户习惯与待搜索文档之前的相关性;另一方面,复杂的布尔检索及表达式检索被沿用在特殊的行业文本检索(研报检索等),以弥补目前机器学习所不能完全理解的长文本检索。
3.表达式检索一般由检索词和各种逻辑运算符组成,它使用运算符结合检索系统规定的各种检索式子,组合成类似数据公式的复杂式子。提交给检索系统,检索系统将表达式解析成搜索引擎能够识别和执行的检索命令式,然后提交给搜索引擎,获取想要的检索结果。检索系统的表达式解析能力及方式、决定了能支持的表达式的复杂层度,直接影响检索策略的成败。


技术实现要素:

4.本发明的目的在于克服现有技术中无法进行复杂程度检索和解析能力低的不足,提供一种表达式检索转换为elasticsearch搜索语句的方法。本发明的方法提高了检索系统的表达式解析能力,能够支持复杂程度的表达式,配合检索策略的制定和成功。
5.为了达到上述发明目的,本发明提供的技术方案如下:
6.一种表达式检索转换为elasticsearch搜索语句的方法,其特征在于,所述表达式检索所用的检索表达式由检索词和逻辑运算符组成,提交检索表达式至检索系统,由检索系统将检索表达式解析为搜索引擎能够识别和执行的检索命令式,再提交给开源搜索引擎elasticsearch,获得想要的检索结果,该方法具体包括设计表达式和设计转换算法两个环节,在所述的设计表达环节中,列举出所使用的字段,分别定义简单检索式符号、检索式结合符和检索表达式符号的优先级;
7.在设计转换算法环节中,包括有:
8.第一步,将检索表达式转换为后缀表达式,其实现包括有:
9.s11.开始操作,查看表达式,并将表达式转化为表达式元素列表;
10.s12.取下一个元素;
11.s13.判断是否为简单检索式,若是则加入后缀表达式,执行s17步骤,若否则执行s14步;
12.s14.判断是否为检索式结合符,若否则输出错误提示,若是则执行s15步;
13.s15.区分字符,查看为左括号、右括号还是其他结合符;
14.s16.若为右括号则由符号栈弹出一个探测元素,判断该探测元素是否为右括号,若是则丢弃右括号再执行s17步;若为左括号则压入符号栈,再执行s17步;若为其他结合符,则判断符号栈是否已空,若已空则将其他结合符压入符号栈,执行s17步,若未空则判断当前符号优先级是否高于栈顶符号,若判断为否则压入符号栈,执行s17步,若判断为是则栈顶符号弹出加入后缀表达式,再一次循环判断当前符号优先级是否高于栈顶符号,直至都压入符号栈,执行s17步;
15.s17.判断是否已经读完表达式元素列表中所有元素,若是则执行步骤s18步,若否则执行s12步;
16.s18.判断符号栈是否已空,若否则将栈顶符号弹出加入后缀表达式,再次判断符号栈是否已空,若是则转换操作结束;
17.第二步.运算检索式后缀表达式,其实现包括有:
18.s21.开始操作,查看后缀表达式;
19.s22.从后缀表达式取一个元素;
20.s23.判断该元素是否为检索式,若是则将检索式入栈,执行s26步,若否则执行s24;
21.s24.判断元素是否为运算符,若否则输出为错误,若是则执行步骤s25;
22.s25.判断符号是否为~,若是则栈弹出1个元素,与运算符融合,结果入栈,再执行s26步,若否则栈弹出2两个元素,与运算符融合,结果入栈,再执行s26步;
23.s26.判断后缀表达式是否仍有元素未处理,若是则执行s22步,若否则执行s27步;
24.s27.判断栈内是否只有一个元素,若否则输出错误,若是则执行s28步;
25.s28.栈内元素弹出,输出elasticsearch搜索语句,操作结束。
26.在本发明一种表达式检索转换为elasticsearch搜索语句的方法中,基于研报检索的应用场景,所述的设计表达环节,所使用的字段包括:标题、摘要、关键词、撰写人、撰写机构、撰写时间、发布时间、报告页数、编号和引用链接。
27.在本发明一种表达式检索转换为elasticsearch搜索语句的方法中,定义的简单检索式符号及含义为:
28.(1)对于符号“=”,检索式示例为“标题=elasticsearch”,表示为“题中需要有elasticsearch关键字”;
29.(2)对于符号“!=”,检索式示例为“标题!=elasticsearch”,表示为“题中不能含有elasticsearch关键字”;
30.(3)对于符号“》或》=”,检索式示例为“发布时间》=2021-06-11”,表示为“研报发布时间大于等于2021-06-11”;
31.(4)对于符号“《或《=”,检索式示例为“撰写时间《=2020-01-01”,表示为“研报撰写时间小于等于2021-06-11”。
32.在本发明一种表达式检索转换为elasticsearch搜索语句的方法中,定义的简单检索式结合符号及含义为:
33.(1)对于符号“|”,检索式示例为“标题=elasticsearch|标题=es”,表示为“标题
中含有关键字elasticsearch或es”;
34.(2)对于符号“&”,检索式示例为“标题=elasticsearch&标题!=solr”,表示为“标题中含有关键字elasticsearch且不含有solr”;
35.(3)对于符号“~”,检索式示例为“~标题=elasticsearch”,表示为“标题中不含有elasticsearch,此处等价于标题!=elasticsearch”;
36.(4)对于符号“^”,检索式示例为“标题=elasticsearch^标题!=solr”,表示为“前后检索式只成功一个”;
37.(5)对于符号“()”,检索式示例为“~(标题=elasticsearch&标题!=solr)”,表示为“主要是为了改变检索式运算的优先级,等价于标题!=elasticsearch|标题=solr”。
38.在本发明一种表达式检索转换为elasticsearch搜索语句的方法中,定义的检索表达式符号优先级为:
39.定义运算符“()”优先级为1,结合性为从左到右;
40.定义运算符“=,!=,》,》=,《,《=”优先级为2,结合性为从左到右;
41.定义运算符“~”优先级为3,结合性为从右到左;
42.定义运算符“&,|,^”优先级为4,结合性为从左到右。
43.一种表达式检索转换为elasticsearch搜索语句的系统,该系统结构组成包括有检索表达式输入模块、后缀表达式生成器模块、elasticsearch搜索语句生成器模块和elasticsearch搜索语句输出模块,其中:
44.所述检索表达式输入模块提供检索表达式的输入和elasticsearch版本的选择,进行检索表达式格式验证及纠错,如无误则将输入和选择的内容传递到后续模块处理;
45.所述后缀表达式生成器模块将接收的检索表达式转换为后缀表达式,并存储两种表达式,再将后缀表达式和所接收的elasticsearch版本传递给elasticsearch搜索语句生成器模块;
46.所述elasticsearch搜索语句生成器模块根据接收的elasticsearch版本和后缀表达式,将后缀表达式转换为对应版本的elasticsearch可执行搜索语句并存储,结果通知给elasticsearch搜索语句输出模块;
47.所述elasticsearch搜索语句输出模块根据接收的结果通知,调取展示存储的检索表达式、后缀表达式和对应elasticsearch可执行搜索语句三者的关系组列表,并根据需要提供结果快速复制和组间相互比对。
48.基于上述技术方案,本发明专利表达式检索转换为elasticsearch搜索语句的方法与现有技术相比具有如下技术优点:
49.1.本发明通过表达式设计,将暧昧、复杂、艰深的语义逻辑关系转换为精确、简洁、易于理解的运算符间关系,使得非技术人员也能顺利表达搜索意图,从而为获得更匹配意图的搜索结果打下基础。
50.2.本发明通过转换算法设计,动态的将易于人理解的表达式转换为易于机器处理的后缀表达式,进一步组装出能够实际运行的elasticsearch可执行搜索语句,使得复杂搜索的学习成本和构建语句的时间成本大大降低,提高了搜索的灵活度和效率。
附图说明
51.图1是本发明一种表达式检索转换为elasticsearch搜索语句的方法中将检索表达式转换为后缀表达式的实现流程示意图。
52.图2是本发明一种表达式检索转换为elasticsearch搜索语句的方法中运算检索式后缀表达式的实现流程示意图。
53.图3是本发明一种表达式检索转换为elasticsearch搜索语句的系统结构组成示意图。
具体实施方式
54.下面我们结合附图和具体的实施例来对本发明表达式检索转换为elasticsearch搜索语句的方法做进一步的详细阐述,以求更为清楚明了地理解其结构组成和工作过程。但不能以此来限制本发明的保护范围。
55.如图1和图2所示,本发明是一种表达式检索转换为elasticsearch搜索语句的方法,所述表达式检索所用的检索表达式由检索词和逻辑运算符组成,提交检索表达式至检索系统,由检索系统将检索表达式解析为搜索引擎能够识别和执行的检索命令式,再提交给开源搜索引擎elasticsearch,获得想要的检索结果。
56.本发明的方法具体包括设计表达式和设计转换算法两个环节,在所述的设计表达环节中,列举出所使用的字段,分别定义简单检索式符号、检索式结合符和检索表达式符号的优先级;
57.如图1所示,在设计转换算法环节中,包括有:
58.第一步,将检索表达式转换为后缀表达式,其实现包括有:
59.s11.开始操作,查看表达式,并将表达式转化为表达式元素列表;
60.s12.取下一个元素;
61.s13.判断是否为简单检索式,若是则加入后缀表达式,执行s17步骤,若否则执行s14步;
62.s14.判断是否为检索式结合符,若否则输出错误提示,若是则执行s15步;
63.s15.区分字符,查看为左括号、右括号还是其他结合符;
64.s16.若为右括号则由符号栈弹出一个探测元素,判断该探测元素是否为右括号,若是则丢弃右括号再执行s17步;若为左括号则压入符号栈,再执行s17步;若为其他结合符,则判断符号栈是否已空,若已空则将其他结合符压入符号栈,执行s17步,若未空则判断当前符号优先级是否高于栈顶符号,若判断为否则压入符号栈,执行s17步,若判断为是则栈顶符号弹出加入后缀表达式,再一次循环判断当前符号优先级是否高于栈顶符号,直至都压入符号栈,执行s17步;
65.s17.判断是否已经读完表达式元素列表中所有元素,若是则执行步骤s18步,若否则执行s12步;
66.s18.判断符号栈是否已空,若否则将栈顶符号弹出加入后缀表达式,再次判断符号栈是否已空,若是则转换操作结束;
67.如图2所示,还包括有第二步.运算检索式后缀表达式,其实现过程包括有:
68.s21.开始操作,查看后缀表达式;
69.s22.从后缀表达式取一个元素;
70.s23.判断该元素是否为检索式,若是则将检索式入栈,执行s26步,若否则执行s24;
71.s24.判断元素是否为运算符,若否则输出为错误,若是则执行步骤s25;
72.s25.判断符号是否为~,若是则栈弹出1个元素,与运算符融合,结果入栈,再执行s26步,若否则栈弹出2两个元素,与运算符融合,结果入栈,再执行s26步;
73.s26.判断后缀表达式是否仍有元素未处理,若是则执行s22步,若否则执行s27步;
74.s27.判断栈内是否只有一个元素,若否则输出错误,若是则执行s28步;
75.s28.栈内元素弹出,输出elasticsearch搜索语句,操作结束。
76.实施例1
77.本实施例以研报场景表达式检索为例,结合开源搜索引擎elasticsearch,提出了一种表达式检索转换为elasticsearch搜索语句的方法,通过表达式设计,参考研报检索场景的常用需求,表达式的结合参考标准的四则运算规则,在方便理解使用的同时,赋予表达式不设限的能力扩展。在研报检索的应用场景中,所述的设计表达环节,所使用的字段包括:标题、摘要、关键词、撰写人、撰写机构、撰写时间、发布时间、报告页数、编号和引用链接。
78.定义的简单检索式符号及含义为:
[0079][0080]
定义的简单检索式结合符号及含义为:
[0081][0082]
定义的检索表达式符号优先级为:
[0083][0084][0085]
在将检索表达式转换为后缀表达式时:
[0086]
原表达式:标题=elasticsearch&((摘要=elasticsearch&申请时间》2021-06-11)|(摘要=es&授权时间《2020-06-11))
[0087]
后缀表达式:摘要=elasticsearch摘要=elasticsearch申请时间》2021-06-11&摘要=es授权时间《2020-06-11&|&。
[0088]
如图3所示,本发明还涉及到一种表达式检索转换为elasticsearch搜索语句的系统,该系统结构组成包括有检索表达式输入模块1、后缀表达式生成器模块2、elasticsearch搜索语句生成器模块3和elasticsearch搜索语句输出模块4,其中:
[0089]
所述检索表达式输入模块1提供检索表达式的输入和elasticsearch版本的选择,进行检索表达式格式验证及纠错,如无误则将输入和选择的内容传递到后续的后缀表达式生成器模块2处理;
[0090]
所述后缀表达式生成器模块2将接收的检索表达式转换为后缀表达式,并存储两种表达式,再将后缀表达式和所接收的elasticsearch版本传递给elasticsearch搜索语句生成器模块3;
[0091]
所述elasticsearch搜索语句生成器模块3根据接收的elasticsearch版本和后缀表达式,将后缀表达式转换为对应版本的elasticsearch可执行搜索语句并存储,结果通知
给elasticsearch搜索语句输出模块4;
[0092]
所述elasticsearch搜索语句输出模块4根据接收的结果通知,调取展示存储的检索表达式、后缀表达式和对应elasticsearch可执行搜索语句三者的关系组列表,并根据需要提供结果快速复制和组间相互比对。
[0093]
上述的表达式检索转换为elasticsearch搜索语句的系统中,在运算检索式后缀表达式时,从左往右扫描后缀表达式,遇到检索式时,将检索式压入堆栈;遇到运算符时,弹出栈顶的检索式,解析两个检索式并按操作符融合,并将结果入栈,重复上述过程直到表达式最右端,最后结果即为转换完的elasticsearch搜索语句。
[0094]
毫无疑问,以上只是本发明专利申请实现的具体实施例,除此之外还包括其他可行的组成设计和操作流程。总而言之,本发明的保护范围还包括其他对于本领域技术人员来说显而易见的变换和替代。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献