1. 概述
1.1 版本
报表服务器版本 | 功能变更 |
---|---|
11.0.2 | 控件模糊搜索逻辑优化 |
11.0.3 | 下拉树控件模糊搜索触发逻辑优化、搜索节点展开逻辑优化,详情见 2 节 |
11.0.6 | 下拉树控件模糊搜索展开节点数量逻辑优化,详情见 2 节 |
11.0.10 | 修改控件模糊匹配字母逻辑,改为不区分大小写,详情见 2 节 |
11.0.11 | 匹配时,支持匹配实际值、显示值,详情见 2 节 |
1.2 功能简介
在使用控件进行填报或查询数据时,若数据字典中的选项很多,找起来会很麻烦,因此 FineReport 提供了控件的模糊搜索功能来提高输入效率。如下图所示:
模糊搜索功能适用的控件为下拉框、下拉复选框、下拉树、新多选下拉树控件。
注:控件使用模糊搜索前提是控件能输入字符,所以控件「属性>校验」处必须勾选「允许编辑」。
2. 功能逻辑
2.1 匹配选项逻辑
1)匹配时匹配「数据字典」处设置的显示值和实际值。
注:11.0.2-11.0.10 版本只匹配显示值。
匹配实际值和显示值 | 只匹配显示值 |
---|---|
实际值为产品类型,显示值为产品名称,输入实际值,也可以匹配到: | 实际值为产品类型,显示值为产品名称,输入实际值,匹配不到: |
2)匹配字母时不区分大小写。
注:11.0.2-11.0.10 版本区分大小写。
不区分大小写 | 区分大小写 |
---|---|
输入"adbc","ADBC"、"adBC"都能被匹配到 | 输入"adbc","ADBC"和"adBC"都不能被匹配到,输入完全一致才能匹配 |
3)字母与汉字选项的汉语拼音首字母进行匹配。
注:11.0.2 及之前版本字母与汉字选项的汉语拼音进行匹配。
字母与汉字选项的汉语拼音进行匹配 | 字母与汉字选项的汉语拼音首字母进行匹配 |
---|---|
输入“liu”,匹配“柳橙汁” | 输入“lcz”,匹配“柳橙汁” |
4)数字、字母不会被分词,字母、数字排列和搜索内容不一致的不会被搜索出来,只匹配和搜索内容一致的选项。
注:11.0.2 及之前版本数字、字母会被分词,数字排列和搜索内容不一致的也会被搜索出来。
数字、字母被分词 | 数字、字母不被分词 |
---|---|
输入“ABC”,“ABDC”、“ADBDC”也会被搜索出来 | 输入“ABC”,只能搜索到含有连贯“ABC”的选项 |
5)汉字会被分词进行匹配,例如:「北大」会按照「北」、「大」两个文字进行匹配
2.2 匹配项排序逻辑
1)模糊搜索后匹配的选项按匹配程度进行排序,匹配程度高的排在前面。同一匹配程度的选项按照「数据字典」选项本身的顺序进行排序。
注:11.0.2 及之前版本模糊搜索后匹配的选项顺序进按照「数据字典」选项本身的顺序进行展示。
按照「数据字典」选项本身的顺序进行排序 | 按照匹配程度进行排序 |
---|---|
搜索“北京大学”时,即使选项和在那个的“北京大学”完全匹配,也会因为在数据字典中位置靠后而排在最后一个。 | 搜索“北京大学”时,选项中“北京大学”完全匹配,匹配度最高,排在第一位,其他同一匹配度的按照数据字典中顺序排列。 |
2)「下拉树控件」匹配时,匹配父节点和子节点,当父节点下的子节点被匹配到时,该父节点也算作匹配。如下图所示:
3)「下拉树控件」匹配项排序时,匹配项的层级越高,排序越靠前。因为子节点被匹配而作为匹配项的父节点将排序在最后面,优先排父节点直接被匹配的。
注:11.0.2 及之前版本模糊搜索后匹配的选项顺序按照「数据字典」选项本身的顺序进行排序。
匹配项层级越高排序越靠前 | 按照「数据字典」中的顺序排序 |
---|---|
搜索“果”,“干果”、“动物”都被匹配到,因为“动物”是因为子节点“果子狸”被匹配,所以排在最后面。 | 搜索“果”,“干果”、“动物”都被匹配到,因为排序不分先后,直接按「数据字典」中的选项排序,所以“动物”项排在上面。 |
因为自身直接被匹配到的节点们,同一层级按照匹配程度进行排序。如下图所示:
因为子节点被匹配而作为匹配项的父节点们,排序时按照「数据字典」中的顺序而排序。如下,虽然“北京大学”的“王明”同学被完全匹配,但在「数据字典」的数据中,“北京师范大学”的“王明阳”同学排在前面,所以,展示时他就排在前面。
2.3 匹配后展开逻辑
1)为性能考虑,「下拉树控件」模糊搜索时,当某个节点匹配了搜索关键字时,该节点不展开;只有当该节点的子节点或者子节点的子节点被匹配时,此节点才展开。
注:11.0.3 及之前版本当某个节点匹配了搜索关键字时,该节点展开。
节点展开 | 节点不展开 |
---|---|
搜索“财务”,“财务部”匹配到了关键字,所以财务部节点自动展开。 | 搜索“财务”,“财务部”虽然匹配到了关键字,但财务部下面的子节点中没有匹配的,所以该节点不展开。 |
2)为性能考虑,「下拉树控件」匹配后节点展开时,默认展开搜索匹配结果的前 100 个节点,后面的节点不展开。
注:11.0.6 及之前,匹配的所有节点都展开。
2.4 匹配时触发逻辑
为性能考虑,在用非英文输入法输入文本时,只有选定了要搜索的内容后才触发模糊搜索,出现选项下拉框。
注:11.0.3 及之前版本在用非英文输入法输入文本时,在未选定内容前也触发模糊搜索,出现选项下拉框。
输入过程中不停的触发 | 选择完后再触发 |
---|---|
每输入一个字符,就出现下拉框,执行一次搜索。 | 所有字符输入完后,选择一个搜索内容后,再出现下拉框,搜索。 |
3. 示例
3.1 下拉框
3.1.1 英文字符串
若下拉框中存在 JOHN 和 ANNA 两条数据,输入 J 则过滤出包含 J 的所有数据即 JOHN,若输入 N 则过滤出包含 N 的所有数据即 JOHN 和 ANNA ,如下图所示:
3.1.2 中文字符串
若下拉框中存在江苏和浙江两条数据,输入 j 则过滤出拼音的首字母中包含j的所有数据即江苏和浙江,若输入 JS 则过滤出首字符的拼音是 js 的所有数据即江苏,如下图所示:
3.2 下拉复选框
类似于下拉框的模糊查询,下拉复选框也有该此功能。由于复选框可以选择多个值,故不同于下拉框,下拉复选框可以模糊查询多个值,如下图,在模板中添加一个「下拉复选框控件」,数据字典设置如下图所示:
预览模板,使用模糊查询选择张珊和王伟两个值。
在下拉复选框的文本框中输z,则过滤出拼音的首字母中包含z 的所有数据,如下图所示:
勾选张珊之后,张珊的值则会返回至文本框中,在后面接着输入w,下拉复选框则会过滤出拼音的首字母中包含w的所有数据,如下图所示:
选中王伟即可。
3.3 下拉树
单选下拉树控件的快速查询与下拉框一致。多选下拉树控件的快速查询与下拉复选框一致。如下图所示:
单选:
多选:
4. 下一步
模糊查询常见问题及解决方案可参考:模糊查询常见问题