语义层包含三种类型的文件:元数据文件(.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 item、Aggregate item。
Field item包括表的字段名、伪字段名、外键名等设定。在设定时可以为Title、Field item和Aggregate item定义别名。
Ø 维项
元数据中表A的外键指向表B的主键,当这个表B主键非外键时,它被称为维。维项设定中,可以为元数据中的维定义别名。
通过设定维项的Code field name和Display 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。后面我们会逐步对词典文件中的配置做详细介绍。
词典文件设计完成后,设计器中就可以使用搜索试验功能了,输入词典中定义好的搜索词进行搜索,完成数据的查询。
下面主要对词典文件中的配置做详细介绍。
量纲是一种数值的类型,比如:长度、重量、金额等。量词顾名思义是用来表示计量单位的词,比如:公里、吨、元等。一个量纲可设定多个量词。
添加量词后,可在宏字段里直接选择想要设置的量词。在搜索实验中量词还可自动匹配字段词,系统会自动根据搜索语句中输入的量词匹配其所指向的字段词,并且将字段表达式作为条件添加至where语句中。
在量纲的设定中,包括量纲和量词。
打开数据结构tab,选中量纲
可以通过工具栏里的按钮,增删量纲。使用按钮调整量纲的顺序。
选中添加过的量纲,可通过量词栏的按钮,增删量词。使用按钮调整量词的顺序。
同一个量纲里的量词之间有系数关系,比如设置量词元的系数为1,那么量词百元的系数就为100。
Ø 表
表中的内容为可查询的逻辑数据表。
在表的设定中,包括表名、宏字段和字段簇。
打开数据结构tab,切换到表
可以通过工具栏里的按钮,增删表。使用按钮调整表的顺序。
【表名】表名对应元数据文件中DQL表的名称,不可重复。
【宏字段】使用宏字段定义功能可以减少字段词的重复定义。导入元数据时,宏字段的标识和表达式默认为 表.字段。
【标识】同一个表内,标识具有唯一性。
【广义字段表达式】支持本表字段、多字段组成的表达式、通过外键引用其他表字段等多种方式。同一个表内,广义字段表达式不可重复。
【数据类型】宏字段的数据类型。
【量词】下拉列表框中的量词来自量纲中的量词。
【字段簇】可以将同一个表里的一些宏字段定义成一个字段簇。字段簇用于动词。
可以为一个表词添加多个表词名称,通过表词指定表名。
切换到编辑tab,点击【表词】。
可通过工具栏里的按钮,增删表词。使用按钮调整表词的顺序。
【表词名称】表名的别名。有字典时,字典中的标题对应词典中的表词名称。可设置多个,多个时以逗号分隔。
【表名】下拉列表框中的表来自数据结构tab中的表,即元数据文件中DQL表的名称。
一个字段词可对应多个宏字段。
切换到编辑tab,点击【字段词】。
可通过工具栏的按钮,增删字段词。使用按钮调整字段词的顺序。
选中添加过的字段词,可通过宏字段栏的按钮,增删宏字段。使用按钮调整宏字段的顺序。
【字段词】可以为一个字段词添加多个字段词名称。有字典时,字典中字段项里的名称对应词典中的字段词名称。可设置多个,多个时以逗号分隔。
【宏字段】下拉列表框中的宏字段标识对应数据结构tab - 表 - 宏字段的标识。
切换到编辑tab,点击【维词】。
可通过工具栏的按钮,增删维词。使用按钮调整维词的顺序。
选中添加过的维词,可通过常数词栏的按钮,增删常数词。使用按钮调整常数词的顺序。
【维词】维词对应元数据文件中的维,一个维词可添加多个维词名称,多个时以逗号分隔。
【常数词】常数词对应维词。真实值缺省为常数词本身,用于关系比较时的实际取值。真实值的取值可以是值、序列或者表达式,值为表达式时需勾选“值是表达式类型”,值为字符串时需使用双引号。
使用批量增加常数词,可通过执行SPL一次性添加多个常数词。
通过比较词设定表达式的比较关系,可以准确定位快速搜索出符合条件的记录。比较词中包含的关系选项有等于、不等于、大于、小于等。
切换到编辑tab,点击【比较词】。
可通过工具栏的按钮,增删比较词。使用按钮调整比较词的顺序。
为了将搜索内容有序的显示,产品提供了排序词,用户可通过添加排序词对选出字段进行升序或降序,从而可以更直观的查看搜索数据,排序词必须放在字段词的右边,可对多个词进行排序。
切换到编辑tab,点击【排序词】。
可通过工具栏的按钮,增删排序词。使用按钮调整排序词的顺序。
选出指定数量的数据时,需勾选选出排序词。比如:订单金额前5
可使用动词定义一些具有动作的词语,动词必须有参数。比如:生于、入学等。
切换到编辑tab,点击【动词】。
可通过工具栏的按钮,增删动词。使用按钮调整动词的顺序。
聚合词,定义聚集方式的词,将字段进行特殊方式的关联,通过使用该聚合词的聚集方法将查询字段进行求和、计数、平均、最大、最小等操作。可手动选择聚合词在搜索语句中的位置。
切换到编辑tab,点击【聚合词】。
可通过工具栏的按钮,增删聚合词。使用按钮调整聚合词的顺序。
【聚集方法】:将当前字段词默认按所选的聚合方式进行聚合。搜索短语不包含维词时则按当前表进行聚集,否则按维词进行分组聚集。
连词是在句子中用来连接词与词、短语与短语或句子与句子的词,不能单独作句子成分,只能起连接作用。连词包括和、或。
切换到编辑tab,点击【连词】。
可通过工具栏的按钮,增删连词。使用按钮调整连词的顺序。
程序发现宏词后会自动替换成定义好的串,再重新解析搜索语句。使用宏词可以提高搜索语句的通用性和易读性,且便于修改。
切换到编辑tab,点击【宏词】。
可通过工具栏的按钮,增删宏词。使用按钮调整宏词的顺序。
为了使得查询词更易读,同时又不会产生错误的结果,在词典中可以设定无效词,无效词在搜索语句中会被忽略。
切换到编辑tab,点击【无效词】。
可通过工具栏的按钮,增删无效词。使用按钮调整无效词的顺序。
词典文件中的内容除了通过菜单逐个添加,还可以直接导入元数据,将元数据中的表、字段和维全部导入到词典中。
导入方法如下所示:
在菜单中执行工具 - 导入元数据,选择元数据文件,字典文件为可选。
【加载并更新词典】加载表、字段和维,并更新词典文件。
【删除不在元数据中的内容】删除词典中已存在而元数据中不存在的表、字段项和维。
【仅加载(辅助编辑)】便于辅助编辑。加载表、字段和维,不更新词典文件。
没有字典文件时,导入后,各个表词、字段词、维词的名称默认与其在元数据中定义的名称相同;有字典文件时,导入后,各个表词、字段词、维词的名称与其在字典中定义的名称相同,字段词名称重复时系统自动合并宏字段。
例如导入示例文件demo.glmd,导入后的词典文件结构如下: