语义层

阅读(1182) 标签: 语义层,

语义层包含三种类型的文件:元数据文件(.glmd)、字典文件(.gdct)、词典(.glxc)文件。元数据文件中包含各个虚表的定义以及DQL表间关系;字典文件定义DQL表或字段的别名;词典文件定义搜索词。

上面章节我们已经了解如何制作元数据文件,本小节我们将介绍元数据文件中DQL表的主要配置,以及字典文件、词典文件的基本制作步骤和主要配置。

 

注意:[集算器安装路径]\esProc\esproc-services\datalogic\conf下提供了一套完整的元数据(demo.glmd)/字典(demo.gdct)/词典(demo.glxc)示例文件。本章节接下来的演示皆是用的此套示例文件。

基础元数据设计

元数据文件使用元数据编辑设计器编辑,文件的默认扩展名为.glmd。它可以和DQL Server的驱动包一起部署在服务器端,客户端以标准JDBC的连接方式连接访问。

以示例文件demo.glmd(虚表和DQL表均已定义完成)为例,打开后切换到DQL

下面主要对DQL表中的配置做详细介绍。

Ø 

DQL表有两种,普通表和假表,在这里先介绍普通表。

普通表的Table source name必须和虚表中的表名完全一致。Table name可以自行修改。

Normal页面中,可以设定表的字段,Data source需要和虚表中的字段名相同。Field name默认和数据来源相同,可以自行修改。

新建普通表不仅可以手动点击菜单添加外,还可以直接由一个或多个虚表生成,方法如下所示:

在菜单栏中点击Tool - Generate table from pseudo table

然后在弹出窗口中选择想要创建的表即可。

可在When the table name already exists下拉框中选择原表和新表的替换情况。

Keep both tables (add a suffix to the new table):新表和原表同名时,新表表名增加后缀_bak

Keep original table:保留原表,忽略新表。

Replace the original table with the new table:删除原表,使用新表。

Ø  主键

用来唯一确定记录的字段,主键从虚表使用的组表文件中继承或者从序表/内表的选出字段的主键设置中继承。

DQL表中设定的主键主要用来定义外键和维,设定时只需要勾选字段后面Primary key的复选框即可,可以为主键选择属性:主键包含时间键、主键是序号键。

 

与数据库中的情况相似,一个表的主键可以是一个,也可以是多个;单一主键的值,或者多个主键值的组合,在一个表中应该具有唯一性

元数据中DQL表的主键可以人为设定,在设定主键时一定要注意主键的合理性,在定义表的多个主键时,DQL Server不会验证主键设定是否合理。如果设定的主键值在表中不唯一,或者主键属性选择有误,在查询或者汇总计算时可能产生错误。

假表、子表等更高级的元数据制作介绍可参考高级元数据设计小节。

字典文件设计

字典文件可以使用元数据编辑设计器编辑,存为.gdct格式的文件。它可以和引擎一起部署在服务器上,客户端通过字典中定义好的表或者字段的别名、字段显示格式、代码显示值等设置,访问元数据定义的数据。字典中的别名设定,与DQL无关,需要在服务器中分析处理,是无法在DQL语句中使用的。

打开元数据编辑设计器,在菜单栏中点击File - New,创建字典文件:

点击【OK,进入字典文件设计界面。

如下图所示,这是设计好的字典文件demo.gdct后面我们会逐步对字典文件中的配置做详细介绍。

 

Ø  表项

Table item设定中,包括Title、每个表中的各种Field itemAggregate item

Field item包括表的字段名、伪字段名、外键名等设定。在设定时可以为TitleField itemAggregate item定义别名。

Ø  维项

元数据中表A的外键指向表B主键,当这个表B主键非外键时,它被称为维项设定中,可以为元数据中的维定义别名。

通过设定维项的Code field nameDisplay field name,在WEB端处理维条件时,如通过显示值设定维过滤条件,在维的查询结果中按显示值处理等。

Ø  分类项

设定Class item可将当前元数据文件中的所有表进行分类。设置分类项后,可在WEB查询界面中通过选择分类项展现当前分类下不同的表信息。

Ø  导入元数据

字典文件中的内容除了通过菜单逐个添加,还可以直接导入元数据,将元数据中的表、字段名、伪字段名、外键名和维项全部导入到字典中。

导入方法如下:

在菜单中执行Tool - Load logical metadata,选择要导入的元数据文件,导入后,各个表项、维项和分类项的名称默认与其在元数据中定义的名称相同:

如果选择了选项Delete tables and fields that are not in metadata,则字典中已存在而元数据中不存在的表、字段项和维将被删除。

例如导入示例文件demo.glmd,导入后的字典文件结构如下:

词典文件设计

词典文件可以使用元数据编辑设计器新建生成,还可以使用元数据文件字典文件生成。词典文件的后缀为.glxc

在元数据编辑设计器中使用元数据文件和词典文件能进行实验。如果将词典文件和引擎一起部署在web服务器上,客户端可以输入词典中定义好的搜索词进行汉语查询,得到搜索结果。

 

打开元数据编辑设计器,在菜单栏中点击文件 - 新建,创建词典文件:

 

如下图所示,这是设计好的词典文件demo.glxc

下面我们会逐步对词典文件中的配置做详细介绍。

Ø  量纲

量纲是一种数值的类型,比如:长度、重量、金额等。量词是用来表示计量单位的词,比如:公里、吨、元等。一个量纲可设定多个量词。

数据结构tab - 量纲的设定中,包括量纲和量词。

同一个量纲里的量词之间有系数关系,比如设置量词元的系数为1,那么量词百元的系数就为100

添加完量词,量词就会出现在数据结构tab - - 宏字段的量词下拉列表中。

在搜索实验中,程序会自动根据搜索语句中的量词匹配其所指向的字段词,并且将字段表达式作为条件添加至where语句中。

 

Ø 

表中的内容为可查询的逻辑数据表。

数据结构tab - 的设定中,包括表名、宏字段和字段簇。

【表名】表名对应元数据文件中DQL表的名称,不可重复。

【宏字段】表上广义字段构成的计算式被称为宏字段。宏字段用于定义字段和字段簇。搜索字段词时,后台自动将字段词替换成广义字段表达式。导入元数据时,宏字段的标识和表达式默认为 .字段

【标识】词典中标识具有唯一性。

【广义字段表达式】支持本表字段、多字段组成的表达式、通过外键引用其他表字段等多种方式。同一个表内,广义字段表达式不可重复。

【数据类型】宏字段的数据类型。

【量词】为宏字段设置量词,下拉列表框中的量词来自量纲中的量词

【字段簇】通常把某个动作相关的一组宏字段定义为一个字段簇,用于定义。比如上图,将与出生有关的Employee.BirthDateEmployee.HomeCity定义成字段簇Employee_cluster1。一个宏字段只能被一个字段簇定义,不能同时用于多个字段簇。

 

Ø  表词

编辑tab - 表词的设定中,为表添加一个或多个表词名称,通过表词指定表名。

【表词名称】表名的别名,多个时以逗号分隔。有字典时,字典中的标题对应词典中的表词名称。

【表名】从下拉列表框中选择表,表名来自数据结构tab - 中的表名。

 

Ø  字段词

编辑tab - 字段词中设定字段词并关联字段簇。搜索字段词时,自动匹配对应的宏字段。

【字段词】为字段添加字段词名称,多个时以逗号分隔。有字典时,字典中字段项里的名称对应词典中的字段词名称。

【宏字段】一个字段词可设置多个宏字段。下拉列表框中的宏字段标识对应数据结构tab - - 宏字段的标识。

【输入宏字段关键字进行查找/输入字段词关键字进行查找:】输入关键字后,点击【查找】可快速搜索关键字或字段词。

 

Ø 

编辑tab - 维词的设定中,包括维词和常数词。

【维词】维词对应元数据文件中的维,一个维可添加多个维词名称,多个时以逗号分隔。

【常数词】将一些维字段的值定义为搜索用语,比如枚举、布尔、数值等类型的维。真实值可以是单值、序列或者表达式,值为表达式时需勾选“值是表达式类型”,值为字符串时需使用双引号。

真实值为序列:

真实值为表达式:

使用批量增加常数词,可通过执行SPL一次性添加多个常数词。

 

Ø  比较词

编辑tab - 比较词中设定比较词,以便搜索时根据比较词对应的表达式,筛选出符合条件的数据。

 

Ø  排序词

编辑tab - 排序词中设定排序词,以便搜索时根据对应的排序方向呈现相应的数据排列。排序词必须放在字段词的右边,支持对多个词进行排序。

选出指定数量的数据时,需勾选选出排序词。比如:订单金额前5

 

Ø  动词

编辑tab - 动词中设定词并关联字段簇。使用动词定义可设定一些具有动作的词语,动词必须和名词搭配使用,比如:生于1978年、生于北京

 

Ø  聚合词

编辑tab - 聚合词中设定聚合词,以便搜索时根据聚集方法对字段进行相应的聚合运算。可手动选择聚合词在搜索语句中的位置。

缺省按字段词所选的聚合方式进行聚合。搜索语句不包含维词时按当前表进行聚集,有维词时则按维词进行分组聚集。

Ø  连词

编辑tab - 连词中设定连词,来连接词与词、短语与短语或句子与句子。连词不能单独作句子成分,只能起连接作用。

Ø  宏词

编辑tab - 宏词中设定宏词。搜索时程序发现宏词后会自动替换成定义好的字符串,再重新解析搜索语句。使用宏词可以提高搜索语句的通用性和易读性,且便于修改。

 

Ø  无效词

编辑tab - 无效词中设定无效词,以便使搜索时的搜索语句更易读,同时又不会产生错误的结果。顾名思义无效词在搜索语句中会被忽略。

 

Ø  导入元数据

可使用工具 - 导入元数据功能,将元数据中的表、字段和维全部导入到词典中。

加载并更新词典】加载表、字段和维,并更新词典文件。

删除不在元数据中的内容】删除典中已存在而元数据中不存在的表、字段项和维。

仅加载(辅助编辑)】便于辅助编辑。加载表、字段和维,不更新词典文件。

 

元数据文件必选,字典文件可选。没有字典文件时,导入后,各个表词、字段词、维词的名称默认与其在元数据中定义的名称相同;有字典文件导入后,各个表词、字段词、维词的名称与其在字典中定义的名称相同,字段词名称重复时程序自动合并宏字段

例如:先新建词典,再导入示例元数据文件demo.glmd,导入后的典文件如下图。

先新建词典,再导入示例元数据文件demo.glmd,并选择了字典文件demo.gdct,导入后的典文件如下图。