CN109241080A - 一种fql查询语言的构建使用方法及其系统 - Google Patents
一种fql查询语言的构建使用方法及其系统 Download PDFInfo
- Publication number
- CN109241080A CN109241080A CN201811144663.5A CN201811144663A CN109241080A CN 109241080 A CN109241080 A CN 109241080A CN 201811144663 A CN201811144663 A CN 201811144663A CN 109241080 A CN109241080 A CN 109241080A
- Authority
- CN
- China
- Prior art keywords
- fql
- query language
- query
- condition
- module
- 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.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种FQL查询语言的构建使用方法及其系统,其特征在于,所述方法包括步骤一,定义FQL查询语言,构建FQL查询语言到Lucene查询语言的转化机制;步骤二,根据FQL查询语言语法规则对待检索信息进行检索查询;所述一种FQL查询语言系统包括信息源模块、搜索客户端模块、搜索服务端模块、FQL解析模块、Lucene查询语言构建模块和索引查询模块;其尽量地简化了整个查询语句,达到简易使用,便于维护的目的,且非常容易记忆,有利于开发者提升开发效率。
Description
技术领域
本发明涉及全文检索领域,特别是涉及一种FQL查询语言的构建使用方法及其系统。
背景技术
Lucene是一个开源并被广泛使用的全文检索类库,简化了全文搜索服务的构建,提供的信息检索功能在某种程度上可以看作是类似关系数据库的结构化数据查询功能。开发者可以基于Lucene搭建自己的全文检索引擎系统,提供全文检索服务。根据查询条件检索信息是Lucene的核心功能之一,Lucene自身提供了丰富的查询方式,比如:布尔查询、短语查询、跨度查询等,可以满足不同的查询场景。在使用Lucene的查询接口时,需要将查询条件转化成Lucene查询语言,才能完成搜索过程。
通常一个完整的全文检索引擎系统包括服务端和客户端两个部分。其中,客户端主要用于封装用户的请求数据,并负责向服务端发起操作请求。而服务端主要用于接收客户端传来的操作请求及数据,执行相应的操作。以基于Lucene全文检索引擎系统的客户端发起查询作请求为例,为了服务端能够识别和理解客户端的查询条件,通常需要约定一定的查询语法,客户端根据查询语法对查询条件进行封装,构建出全文检索引擎系统的查询语言,服务端首先根据查询语法解析出查询条件,进而转化为Lucene查询语言,执行查询操作。
目前,业界有两个应用广泛的基于Lucene的全文检索引擎系统:Elasticsearch和Solr。其中,Elasticsearch的查询语法为JSON风格的查询语法,Solr查询语法为基于BNF范式的一套自定义查询语法。通过查询语法的定义,在一定程度上降低了客户端的使用难度,避免了将Lucene原生的查询语法暴露给使用者。但不管是Elasticsearch还是Solr的查询语法,都要求使用者对相应全文检索引擎系统定义的语法规则有一定的了解,存在一定的学习成本。此外,目前业界并没有一种统一的适用于Lucene的查询语言,一旦服务端采用了新的全文检索引擎系统,比如从Solr切换到Elasticsearch,整个客户端以及应用端都需要随之调整查询语言的构建代码,带来巨大的额外成本。
所谓全文检索引擎系统,是指可以提供完整的全文检索服务的应用或者应用集群。
所谓查询条件,是指能够描述用户检索需求的信息。
所谓查询语法,是指一套可以构建查询语言的规则,通常通过定义关键字以及特定的组合,来表示特定的功能和含义。
所谓查询语言,是指根据查询语法构建出的可以用来表达查询需求的表达式。
所谓Lucene查询语言,是指基于Lucene的Query查询对象构建的查询表达式。
所谓Elasticsearch查询语言,是指Elasticsearch定义的基于JSON格式构建的查询表达式。
所谓Solr查询语言,是指Solr定义的基于BNF范式构建的查询表达式。
发明内容
本发明所要解决的技术问题是克服现有技术的不足,提供一种FQL查询语言的构建使用方法及其系统。
为解决上述技术问题,本发明提供一种FQL查询语言的构建使用方法,其特征在于,包括如下步骤:
步骤一,定义FQL查询语言,构建FQL查询语言到Lucene查询语言的转化机制;
步骤二,根据FQL查询语言语法规则对待检索信息进行检索查询;
所述步骤一包括:
步骤1,定义FQL查询语言,即FQL支持的功能以及对应的词法及语法,所述FQL查询语言即适用于Lucene全文检索引擎系统的查询语言;
步骤2,定义FQL查询语言的语法分析过程;
步骤3,对FQL查询语言进行解析,解析出原始查询条件;
步骤4,建立根据原始查询条件转向Lucene查询语言的转换机制;
所述步骤二包括:
步骤5,搜索客户端根据定义的FQL查询语言语法规则,结合实际的信息检索需求,构建待检索的FQL查询语句;
步骤6,搜索服务端解析待检索的FQL查询语句,得到待检索的原始查询条件;
步骤7,通过原始查询条件到Lucene查询语言的转换机制,将待检索的原始查询条件转化为Lucene可以识别的检索语言;
步骤8,使用Lucene检索语言进行检索索引并返回结果,即通过调用lucene查询接口,根据步骤7生成的查询条件,执行查询,返回查询结果。
所述步骤1中,FQL查询语言的定义包括FQL查询语言的词法定义、FQL查询语言的语法定义、FQL查询语言的词法分析、FQL查询语言的语法分析及FQL查询语言的语义分析,FQL查询语言的语法定义遵循BNF范式。
所述步骤1中,FQL查询语言的定义包括如下步骤:
步骤1-1:定义词法规则;具体为定义FQL查询语言中具备特定含义的特殊词和特殊符号;
具体词法规则如下:
SELECT:表示查询功能;
FROM:表示查询目标;
WHERE:表示查询条件;
AND:表示与查询;
OR:表示或查询;
NOT:表示非查询;
ORDER BY:表示排序条件;
FILTER BY:表示过滤条件;
EXCLUDE BY:表示排除条件;
FACET BY:表示统计条件;
GROUP BY:表示分组条件;
START:表示翻页条件;
步骤1-2:定义语法规则;具体为定义查询语言中特殊词在使用时的排列次序及特殊符号的使用场景;
步骤1-3:定义不能直接被识别字符的规则;具体为定义当检索词与特殊词、特殊符号存在冲突时的处理方式;
步骤1-4:定义语法解析规则,包括了词法分析规则、语法分析规则、语义分析规则及读取规则的定义;
所述词法分析规则用于识别“经查询语言编制形成的查询条件内存在”的特殊词和特殊符号;所述特殊词和特殊符号是指应用于规范查询语言中具备特定含义的特殊词和特殊符号;
所述语法分析是用于识别“经查询语言编制形成的查询条件内存在”的特殊词使用顺序和特殊符号使用场景是否准确;特殊词使用顺序和特殊符号使用场景是指应用于规范查询语言中特殊词出现的顺序和特殊符号的使用场景;
所述语义分析用于解析“经查询语言编制形成的查询条件内存在”的特殊词和特殊符号所代表的特定含义;
所述读取规则是用于定义在读取“经查询语言编制形成的查询条件”过程中,设置特殊词、特殊符合和具体查询内容之间的读取方式。
所述步骤2中,FQL查询语言的语法分析过程包括如下步骤:
步骤2-1:分析搜索返回域;
步骤2-2:分析搜索业务名称;
步骤2-3:分析搜索条件;
步骤2-4:分析过滤条件;
步骤2-5:分析排除过滤条件;
步骤2-6:分析排序条件;
步骤2-7:分析分组条件;
步骤2-8:分析统计条件;
步骤2-9:分析翻页条件。
所述步骤3中,对FQL查询语言进行解析主要是检测FQL查询语句的词法和语法是否符合规则,对于符合语法规则的查询语句,结合词法分析,解析出原始的查询条件。
步骤5-1:给出表示查询功能的关键词select;
步骤5-2:给出搜索需要返回的字段信息,如:prod_id字段;
步骤5-3:给出查询目标关键词from;
步骤5-4:给出具体查询目标业务名称,如:mic_cn_product_gsa;
步骤5-5:给出表示条件查询的关键词where;
步骤5-6:给出具体的查询条件,如:prod_name:”报警器”,即要求在prod_name字段上包含“报警器”;
步骤5-7:给出表示过滤条件的关键词filter by;
步骤5-8:给出具体的过滤条件,如:cs_level:“30”,即表示过滤出cs_level字段值是30的记录;
步骤5-9:给出表示排除条件的关键词exclude by;
步骤5-10:给出具体的排除条件group_id,即排除掉相应group_id字段值的记录;
步骤5-11:给出表示排序条件的关键词order by;
步骤5-12:给出具体的排序条件score desc,即按照相关性得分降序排序;
步骤5-13:给出表示统计条件的关键词facet by;
步骤5-14:给出具体的统计条件,如:cat_code(0),即表示统计返回结果的cat_code字段信息;
步骤5-15:给出表示翻页位置的关键词start,然后给出具体的翻页位置,如:1,即表示从第1条记录开始翻页;
步骤5-16:给出表示每页返回的结果数量的关键词limit,然后给出具体的返回数量,如:40,即表示每页返回40条结果。
所述步骤6中,将生成的FQL查询语句中的原始查询条件进行反转解析,即对于FQL查询语句按照5-1至5-15的步骤,依次解析出其中的查询条件。
一种FQL查询语言系统,其特征在于:所述FQL查询语言系统包括信息源模块、搜索客户端模块、搜索服务端模块、FQL解析模块、Lucene查询语言构建模块和索引查询模块,所述信息源模块与搜索客户端模块相连,用于将信息检索场景的数据提供给搜索客户端模块,所述搜索客户端模块中包括FQL查询语言构建模块和搜索结果解析模块,所述FQL查询语言构建模块和搜索结果解析模块用于完成FQL查询语言语法规则的构建以及搜索结果的解析。所述搜索服务端模块与搜索客户端模块相连,其中包括依次相连的FQL解析模块、Lucene查询语言构建模块和索引查询模块,所述FQL解析模块中包括用于语法解析的FQL语法解析器和用于词法解析的FQL词法解析器,所述语法解析器和词法解析器均通过JavaCC工具生成,所述的Lucene查询语言构建模块,用于将FQL解析模块解析出的原始查询条件转化为Lucene识别的查询语言,所述索引查询模块用于服务端的索引查询接口,利用Lucene索引接口,根据Lucene检索语言进行检索查询并返回结果给搜索客户端模块。
本发明所达到的有益效果:
1、无感差基于SQL基础语法构建Lucene查询语言
由于SQL被广泛使用,且Lucene的全文检索在的查询功能在形式类似于关系型数据库的查询,因此,对于客户端开发人员来说很容易接受这种类SQL语法,即使从未对Lucene有过了解,只要经过简单的培训即可上手,且非常容易记忆,有利于开发者提升开发效率;
2、屏蔽因Lucene查询语法调整带来的变化。
通过本专利定义FQL语法,实现了对FQL使用者和Lucene原生的查询语言的分离。使用者无需关心FQL语法与Lucene原生查询语言之间是如何关联和转化的。一旦遇到Lucene原生查询语法变动的情况,可以在服务端的解析程序中进行调整与之适配,对于客户端而言可以完全不用关心这种变化。
附图说明
图1为本发明的示例性实施例的方法流程图;
图2为本发明的示例性实施例的结构简图。
具体实施方式
下面结合附图和示例性实施例对本发明作进一步的说明:
如图1所示的一种FQL查询语言的构建使用方法的步骤包括:
步骤一,定义FQL查询语言,构建FQL查询语言到Lucene查询语言的转化机制。
步骤二,根据FQL查询语言语法规则对待检索信息进行检索查询;
所述步骤一包括:
步骤1,定义FQL查询语言,即FQL支持的功能以及对应的词法及语法。所述FQL查询语言即适用于Lucene全文检索引擎系统的查询语言;
步骤2,定义FQL查询语言的语法分析过程;
步骤3,对FQL查询语言进行解析,解析出原始查询条件;
步骤4,建立根据原始查询条件转向Lucene查询语言的转换机制;
所述步骤二包括:
步骤5,搜索客户端根据定义的FQL查询语言语法规则,结合实际的信息检索场景,构建待检索的FQL查询语句;
步骤6,搜索服务端解析待检索的FQL查询语句,得到待检索的原始查询条件;
步骤7,通过原始查询条件到Lucene查询语言的转换机制,将待检索的原始查询条件转化为Lucene可以识别的检索语言;
步骤8,使用Lucene检索语言进行检索索引并返回结果,即通过调用lucene查询接口,根据步骤7生成的查询条件,执行查询,返回查询结果。
其中,步骤1:FQL查询语言的定义还包括查询语言的词法定义、查询语言的语法定义、查询语言的词法分析、查询语言的语法分析及查询语言的语义分析。FQL查询语言的语法定义遵循BNF范式。
查询语言的定义步骤:
步骤1-1:定义词法规则;具体为定义查询语言中具备特定含义的特殊词和特殊符号;
具体词法定义如下:
SELECT:表示查询功能(目前只支持查询功能);
FROM:表示查询目标;
WHERE:表示查询条件;
AND:表示与查询;
OR:表示或查询;
NOT:表示非查询;
ORDER BY:表示排序条件;
FILTER BY:表示过滤条件;
EXCLUDE BY:表示排除条件;
FACET BY:表示统计条件;
GROUP BY:表示分组条件;
START:表示翻页条件;
步骤1-2:定义语法规则;具体为定义查询语言中特殊词在使用时的排列次序及特殊
符号的使用场景;
步骤1-3:定义不能直接被识别字符的规则;具体为定义当检索词与特殊词、特殊符号存在冲突时的处理方式;
步骤1-4:定义语法解析规则,具体包括了词法分析规则、语法分析规则、语义分析规则及读取规则的定义;
所述词法分析规则用于识别“经查询语言编制形成的查询条件内存在”的特殊词和特殊符号;
所述语法分析是用于识别“经查询语言编制形成的查询条件内存在”的特殊词使用顺序和特殊符号使用场景是否准确;
所述语义分析用于解析“经查询语言编制形成的查询条件内存在”的特殊词和特殊符号所代表的特定含义;
所述读取规则是用于定义在读取“经查询语言编制形成的查询条件”过程中,设置特殊词、特殊符合和具体查询内容之间的读取方式;
特别地,所述查询语言的词法,是指应用于规范查询语言中具备特定含义的特殊词;
特别地,所述查询语言的语法,是指应用于规范查询语言中特殊词出现的顺序和特殊符号的使用场景;
步骤2:定义查询语言的语法分析流过程
查询语言的语法分析过程如下:
步骤2-1:分析搜索返回域;
步骤2-2:分析搜索业务名称;
步骤2-3:分析搜索条件;
步骤2-4:分析过滤条件;
步骤2-5:分析排除过滤条件;
步骤2-6:分析排序条件;
步骤2-7:分析分组条件;
步骤2-8:分析统计条件;
步骤2-9:分析翻页条件;
步骤3:生成词法解析器和语法解析器
该步骤主要基于步骤1和步骤2定义的规则,步骤1和步骤2的内容存放于.JJ文件中,然后用Java CC(Java Compiler Compiler)工具生成词法解析器和语法解析器。JavaCC是业界流行的解析器生成器,它读取语法规范并将其转换成可以识别语法的Java程序。
词法解析器的功能主要是检测查询语句的词法是否符合规则;
语法解析器的功能主要是检测查询语句的语法是否符合规则,对于符合语法规则的查询语句,结合词法分析,解析出原始的查询条件;
步骤4:建立根据原始查询条件向Lucene查询语言的转换机制,将查询条件转换为搜索引擎能识别的查询语句;
例如,查询条件:产品名称包含“苹果”且产品名称包含“手机”,通过步骤4的转化机制可以得到以下Lucene查询语句:
BooleanQuery query=new BooleanQuery();
query.add(new TermQuery(new Term("prod_name","苹果")),Occur.Must);
query.add(new TermQuery(new Term("prod_name","手机")),Occur.Must);
步骤5,根据定义的FQL查询语言语法规则,结合实际的信息检索需求,构建待检索的FQL查询语句;对应图1中的构建FQL查询语句;
查询语句具体表现为:
select prod_id from mic_cn_product_gsa where prod_name=”报警器”filter by cs_level:”30”exclude by group_id:"611839195"order by score descfacet by cat_code(0)start 1limit 40
步骤5-1:给出表示查询功能的关键词select;
步骤5-2:给出搜索需要返回的字段信息prod_id字段;
步骤5-3:给出查询目标关键词from;
步骤5-4:给出具体查询目标业务名称mic_cn_product_gsa;
步骤5-5:给出表示条件查询的关键词where;
步骤5-6:给出具体的查询条件prod_name=”报警器”,即在prod_name字段上查询”报警器”这个词;
步骤5-7:给出表示过滤条件的关键词filter by;
步骤5-8:给出具体的过滤条件cs_level:”30”,即过滤出cs_level字段值是30的记录;
步骤5-9:给出表示排除条件的关键词exclude by;
步骤5-10:给出具体的排除条件group_id:"611839195",即排除掉group_id字段值是611839195的记录;
步骤5-11:给出表示排序条件的关键词order by;
步骤5-12:给出具体的排序条件score desc,即按照相关性得分降序排序;
步骤5-13:给出表示统计条件的关键词facet by;
步骤5-14:给出具体的统计条件cat_code(0),即统计返回结果的cat_code字段信息;
步骤5-15:给出表示翻页位置的关键词start,然后给出具体的翻页位置1,即从第一条记录开始翻页;
步骤5-16:给出表示每页返回的结果数量的关键词limit,然后给出具体的返回数量40,即每页返回40条结果;
步骤6,解析待检索的FQL查询语句,得到待检索的原始查询条件,即将生成的FQL查询语句中的原始查询条件进行反转解析,对于FQL查询语句按照5-1至5-15的步骤,依次解析出其中的查询条件,对应图1中的FQL词法解析、FQL语法解析。例如:产品名称包含“苹果”且产品名称包含“手机”
步骤7,通过原始查询条件到Lucene查询语言的转换机制,将待检索的原始查询条件转化为Lucene可以识别的检索语言,对应图1中的构建Lucene查询语言,例如,
BooleanQuery query=new BooleanQuery();
query.add(new TermQuery(new Term("prod_name","苹果")),Occur.Must);
query.add(new TermQuery(new Term("prod_name","手机")),Occur.Must);;
步骤8,根据Lucene查询语言,通过服务端进行索引查询并返回结果,即通过调用lucene查询接口,根据步骤7生成的查询条件,执行查询,返回查询结果,对应图1的执行索引查询、返回查询结果。
如图2所示的一种FQL查询语言系统,所述FQL查询语言系统包括信息源模块、搜索客户端模块、搜索服务端模块、FQL解析模块、Lucene查询语言构建模块和索引查询模块,所述信息源模块与搜索客户端模块相连,用于将信息检索场景的数据提供给搜索客户端模块,所述搜索客户端模块中包括FQL查询语言构建模块和搜索结果解析模块,所述FQL查询语言构建模块和搜索结果解析模块用于完成FQL查询语言语法规则的构建以及搜索结果的解析。所述搜索服务端模块与搜索客户端模块相连,其中包括依次相连的FQL解析模块、Lucene查询语言构建模块和索引查询模块,所述FQL解析模块中包括用于语法解析的FQL语法解析器和用于词法解析的FQL词法解析器,所述语法解析器和词法解析器均通过JavaCC工具生成,所述的Lucene查询语言构建模块,用于将FQL解析模块解析出的原始查询条件转化为Lucene识别的查询语言,所述索引查询模块用于服务端的索引查询接口,利用Lucene索引接口,根据Lucene检索语言进行检索查询并返回结果给搜索客户端模块。
本发明的一种FQL查询语言的构建使用方法及其系统,本质上是一种类SQL的查询语言。借助于SQL的简洁语法以及被广泛接受和使用,文本检索引擎系统客户端能够根据查询条件和SQL语法轻松的构建出Lucene查询语言,降低开发成本,具体表现在如下几个方面:
(1)无感差基于SQL基础语法构建Lucene查询语言
由于SQL被广泛使用,且Lucene的全文检索在的查询功能在形式类似于关系型数据库的查询,因此,对于客户端开发人员来说很容易接受这种类SQL语法。即使从未对Lucene有过了解,只要经过简单的培训即可上手,且非常容易记忆。例:存在一个库表(索引):mic_cn_product,结构如下:
字段名称 | 字段类型 | 字段描述 |
prod_id | Number | 产品ID |
prod_name | String | 产品名称 |
category | String | 所属目录 |
add_time | String | 添加时间 |
检索需求:产品名称包含“苹果”且产品名称包含“手机”,必须在目录码为1000000000的目录中,取前10条结果且返回结果根据产品添加时间排序。
返回字段:产品ID
以下为利用不同查询语言实现上述检索需求而构造的查询语句对比:
通过以上对比可以看出,FQL查询语言与SQL查询语言语法非常地接近,对于熟悉SQL的开发人员可以很容易理解和使用FQL。同时,对比Elasticsearch、Solr以及原生Lucene查询语言不难看出,FQL语法非常地简洁,有利于开发者提升开发效率。(2)屏蔽因Lucene查询语法调整带来的变化。
通过本专利定义FQL语法,实现了对FQL使用者和Lucene原生的查询语言的分离。使用者无需关心FQL语法与Lucene原生查询语言之间是如何关联和转化的。一旦遇到Lucene原生查询语法变动的情况,可以在服务端的解析程序中进行调整与之适配,对于客户端而言可以完全不用关心这种变化。
以上实施例不以任何方式限定本发明,凡是对以上实施例以等效变换方式做出的其它改进与应用,都属于本发明的保护范围。
Claims (8)
1.一种FQL查询语言的构建使用方法,其特征在于,包括如下步骤:
步骤一,定义FQL查询语言,构建FQL查询语言到Lucene查询语言的转化机制;
步骤二,根据FQL查询语言语法规则对待检索信息进行检索查询;
所述步骤一包括:
步骤1,定义FQL查询语言,即FQL支持的功能以及对应的词法及语法,所述FQL查询语言即适用于Lucene全文检索引擎系统的查询语言;
步骤2,定义FQL查询语言的语法分析过程;
步骤3,对FQL查询语言进行解析,解析出原始查询条件;
步骤4,建立根据原始查询条件转向Lucene查询语言的转换机制;
所述步骤二包括:
步骤5,搜索客户端根据定义的FQL查询语言语法规则,结合实际的信息检索需求,构建待检索的FQL查询语句;
步骤6,搜索服务端解析待检索的FQL查询语句,得到待检索的原始查询条件;
步骤7,通过原始查询条件到Lucene查询语言的转换机制,将待检索的原始查询条件转化为Lucene可以识别的检索语言;
步骤8,使用Lucene检索语言进行检索索引并返回结果,即通过调用lucene查询接口,根据步骤7生成的查询条件,执行查询,返回查询结果。
2.如权利要求1所述的一种FQL查询语言的构建使用方法,其特征在于:所述步骤1中,FQL查询语言的定义包括FQL查询语言的词法定义、FQL查询语言的语法定义、FQL查询语言的词法分析、FQL查询语言的语法分析及FQL查询语言的语义分析,FQL查询语言的语法定义遵循BNF范式。
3.如权利要求2所述的一种FQL查询语言的构建使用方法,其特征在于:所述步骤1中,FQL查询语言的定义包括如下步骤:
步骤1-1:定义词法规则;具体为定义FQL查询语言中具备特定含义的特殊词和特殊符号;
具体词法规则如下:
SELECT:表示查询功能;
FROM:表示查询目标;
WHERE:表示查询条件;
AND:表示与查询;
OR:表示或查询;
NOT:表示非查询;
ORDER BY:表示排序条件;
FILTER BY:表示过滤条件;
EXCLUDE BY:表示排除条件;
FACET BY:表示统计条件;
GROUP BY:表示分组条件;
START:表示翻页条件;
步骤1-2:定义语法规则;具体为定义查询语言中特殊词在使用时的排列次序及特殊符号的使用场景;
步骤1-3:定义不能直接被识别字符的规则;具体为定义当检索词与特殊词、特殊符号存在冲突时的处理方式;
步骤1-4:定义语法解析规则,包括了词法分析规则、语法分析规则、语义分析规则及读取规则的定义;
所述词法分析规则用于识别“经查询语言编制形成的查询条件内存在”的特殊词和特殊符号;所述特殊词和特殊符号是指应用于规范查询语言中具备特定含义的特殊词和特殊符号;
所述语法分析是用于识别“经查询语言编制形成的查询条件内存在”的特殊词使用顺序和特殊符号使用场景是否准确;特殊词使用顺序和特殊符号使用场景是指应用于规范查询语言中特殊词出现的顺序和特殊符号的使用场景;
所述语义分析用于解析“经查询语言编制形成的查询条件内存在”的特殊词和特殊符号所代表的特定含义;
所述读取规则是用于定义在读取“经查询语言编制形成的查询条件”过程中,设置特殊词、特殊符合和具体查询内容之间的读取方式。
4.如权利要求1所述的一种FQL查询语言的构建使用方法,其特征在于:所述步骤2中,FQL查询语言的语法分析过程包括如下步骤:
步骤2-1:分析搜索返回域;
步骤2-2:分析搜索业务名称;
步骤2-3:分析搜索条件;
步骤2-4:分析过滤条件;
步骤2-5:分析排除过滤条件;
步骤2-6:分析排序条件;
步骤2-7:分析分组条件;
步骤2-8:分析统计条件;
步骤2-9:分析翻页条件。
5.如权利要求1所述的一种FQL查询语言的构建使用方法,其特征在于:所述步骤3中,对FQL查询语言进行解析主要是检测FQL查询语句的词法和语法是否符合规则,对于符合语法规则的查询语句,结合词法分析,解析出原始的查询条件。
6.如权利要求1所述的一种FQL查询语言的构建使用方法,其特征在于,所述步骤5中,构建待检索的FQL查询语句包括如下步骤:
步骤5-1:给出表示查询功能的关键词select;
步骤5-2:给出搜索需要返回的字段信息,如:prod_id字段;
步骤5-3:给出查询目标关键词from;
步骤5-4:给出具体查询目标业务名称,如:mic_cn_product_gsa;
步骤5-5:给出表示条件查询的关键词where;
步骤5-6:给出具体的查询条件,如:prod_name:”报警器”,即要求在prod_name字段上包含“报警器”;
步骤5-7:给出表示过滤条件的关键词filter by;
步骤5-8:给出具体的过滤条件,如:cs_level:“30”,即表示过滤出cs_level字段值是30的记录;
步骤5-9:给出表示排除条件的关键词exclude by;
步骤5-10:给出具体的排除条件group_id,即排除掉相应group_id字段值的记录;
步骤5-11:给出表示排序条件的关键词order by;
步骤5-12:给出具体的排序条件score desc,即按照相关性得分降序排序;
步骤5-13:给出表示统计条件的关键词facet by;
步骤5-14:给出具体的统计条件,如:cat_code(0),即表示统计返回结果的cat_code字段信息;
步骤5-15:给出表示翻页位置的关键词start,然后给出具体的翻页位置,如:1,即表示从第1条记录开始翻页;
步骤5-16:给出表示每页返回的结果数量的关键词limit,然后给出具体的返回数量,如:40,即表示每页返回40条结果。
7.如权利要求1所述的一种FQL查询语言的构建使用方法,其特征在于:所述步骤6中,将生成的FQL查询语句中的原始查询条件进行反转解析,即对于FQL查询语句按照5-1至5-15的步骤,依次解析出其中的查询条件。
8.一种根据权利要求1-7之一所述方法运行的FQL查询语言系统,其特征在于:所述FQL查询语言系统包括信息源模块、搜索客户端模块、搜索服务端模块、FQL解析模块、Lucene查询语言构建模块和索引查询模块,所述信息源模块与搜索客户端模块相连,用于将信息检索场景的数据提供给搜索客户端模块,所述搜索客户端模块中包括FQL查询语言构建模块和搜索结果解析模块,所述FQL查询语言构建模块和搜索结果解析模块用于完成FQL查询语言语法规则的构建以及搜索结果的解析。所述搜索服务端模块与搜索客户端模块相连,其中包括依次相连的FQL解析模块、Lucene查询语言构建模块和索引查询模块,所述FQL解析模块中包括用于语法解析的FQL语法解析器和用于词法解析的FQL词法解析器,所述语法解析器和词法解析器均通过JavaCC工具生成,所述的Lucene查询语言构建模块,用于将FQL解析模块解析出的原始查询条件转化为Lucene识别的查询语言,所述索引查询模块用于服务端的索引查询接口,利用Lucene索引接口,根据Lucene检索语言进行检索查询并返回结果给搜索客户端模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811144663.5A CN109241080B (zh) | 2018-09-29 | 2018-09-29 | 一种fql查询语言的构建使用方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811144663.5A CN109241080B (zh) | 2018-09-29 | 2018-09-29 | 一种fql查询语言的构建使用方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109241080A true CN109241080A (zh) | 2019-01-18 |
CN109241080B CN109241080B (zh) | 2020-09-29 |
Family
ID=65054523
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811144663.5A Active CN109241080B (zh) | 2018-09-29 | 2018-09-29 | 一种fql查询语言的构建使用方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109241080B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727651A (zh) * | 2019-09-05 | 2020-01-24 | 深圳平安通信科技有限公司 | 一种日志处理方法、装置、终端设备及计算机可读存储介质 |
CN111767309A (zh) * | 2020-07-07 | 2020-10-13 | 中电万维信息技术有限责任公司 | 一种基于开关设计模式优化检索的方法 |
CN111897911A (zh) * | 2020-06-11 | 2020-11-06 | 中国科学院计算机网络信息中心 | 一种基于次级属性图的非结构化数据查询方法及系统 |
CN112416962A (zh) * | 2020-11-06 | 2021-02-26 | 北京偶数科技有限公司 | 数据查询方法、装置以及存储介质 |
CN112818001A (zh) * | 2020-12-17 | 2021-05-18 | 南京南瑞信息通信科技有限公司 | 一种多数据源数据查询方法及系统 |
CN114003272A (zh) * | 2021-11-01 | 2022-02-01 | 焦点科技股份有限公司 | 一种埋点参数及触发条件配置化方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8024324B2 (en) * | 2008-06-30 | 2011-09-20 | International Business Machines Corporation | Information retrieval with unified search using multiple facets |
CN106933845A (zh) * | 2015-12-30 | 2017-07-07 | 阿里巴巴集团控股有限公司 | 使用sql实现mdx查询效果的方法和装置 |
CN108446289A (zh) * | 2017-09-26 | 2018-08-24 | 北京中安智达科技有限公司 | 一种支持异构数据库的数据检索方法 |
-
2018
- 2018-09-29 CN CN201811144663.5A patent/CN109241080B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8024324B2 (en) * | 2008-06-30 | 2011-09-20 | International Business Machines Corporation | Information retrieval with unified search using multiple facets |
CN106933845A (zh) * | 2015-12-30 | 2017-07-07 | 阿里巴巴集团控股有限公司 | 使用sql实现mdx查询效果的方法和装置 |
CN108446289A (zh) * | 2017-09-26 | 2018-08-24 | 北京中安智达科技有限公司 | 一种支持异构数据库的数据检索方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727651A (zh) * | 2019-09-05 | 2020-01-24 | 深圳平安通信科技有限公司 | 一种日志处理方法、装置、终端设备及计算机可读存储介质 |
CN111897911A (zh) * | 2020-06-11 | 2020-11-06 | 中国科学院计算机网络信息中心 | 一种基于次级属性图的非结构化数据查询方法及系统 |
CN111767309A (zh) * | 2020-07-07 | 2020-10-13 | 中电万维信息技术有限责任公司 | 一种基于开关设计模式优化检索的方法 |
CN111767309B (zh) * | 2020-07-07 | 2022-06-24 | 中电万维信息技术有限责任公司 | 一种基于开关设计模式优化检索的方法 |
CN112416962A (zh) * | 2020-11-06 | 2021-02-26 | 北京偶数科技有限公司 | 数据查询方法、装置以及存储介质 |
CN112818001A (zh) * | 2020-12-17 | 2021-05-18 | 南京南瑞信息通信科技有限公司 | 一种多数据源数据查询方法及系统 |
CN114003272A (zh) * | 2021-11-01 | 2022-02-01 | 焦点科技股份有限公司 | 一种埋点参数及触发条件配置化方法 |
CN114003272B (zh) * | 2021-11-01 | 2024-04-16 | 焦点科技股份有限公司 | 一种埋点参数及触发条件配置化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109241080B (zh) | 2020-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109241080A (zh) | 一种fql查询语言的构建使用方法及其系统 | |
US8676821B2 (en) | Summary filter transformation | |
CA2484009C (en) | Managing expressions in a database system | |
US9378285B2 (en) | Extending keyword searching to syntactically and semantically annotated data | |
US20120143860A1 (en) | Identifying key phrases within documents | |
US8671103B2 (en) | Method for semantic service registration and query based on WordNet | |
US20060253410A1 (en) | Database reverse query matching | |
CN112035599B (zh) | 基于垂直搜索的查询方法、装置、计算机设备及存储介质 | |
CN110597844B (zh) | 异构数据库数据统一访问方法及相关设备 | |
CN111444220B (zh) | 规则驱动和数据驱动相结合的跨平台sql查询优化方法 | |
CN105760462A (zh) | 基于关联数据查询的人机交互方法及装置 | |
CN112580357A (zh) | 自然语言查询的语义解析 | |
CN111858567A (zh) | 一种通过标准数据元进行政务数据清洗的方法和系统 | |
US11487795B2 (en) | Template-based automatic software bug question and answer method | |
GB2536898A (en) | Reconciliation processing system, method, and program | |
CN109145009A (zh) | 一种基于SQL检索ElasticSearch的方法 | |
US11620282B2 (en) | Automated information retrieval system and semantic parsing | |
Wudaru et al. | Question answering on structured data using NLIDB approach | |
CN112131246A (zh) | 基于自然语言语义解析的数据中心智能查询统计方法 | |
CN112183110A (zh) | 一种基于数据中心的人工智能数据应用系统及应用方法 | |
CN113934430A (zh) | 数据检索分析方法、装置、电子设备及存储介质 | |
Chang et al. | Mining semantics for large scale integration on the web: evidences, insights, and challenges | |
CN111597202B (zh) | 一种基于分形理论的战场态势信息按需提取方法 | |
CN110147396A (zh) | 一种映射关系生成方法及装置 | |
Sucameli et al. | MATE, a Meta Layer Between Natural Language and Database. |
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 |