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

搜索方法、装置、设备、存储介质及程序产品与流程

2022-06-11 07:52:58 来源:中国专利 TAG:


1.本发明涉及计算机领域,尤其涉及一种搜索方法、装置、设备、存储介质及程序产品。


背景技术:

2.树形结构数据,是一种常见的数据形式,采用树形结构来表示数据之间的级联关系,能够清晰、直观地描述数据之间的联系,已成为ui(user interface,用户界面)设计中重要的组成部分。
3.常见的ui组件库中,如ant design、element ui、iview等,均提供树形控件,如文件夹、组织架构、国家地区、商品分类等的树形控件,在该树形控件中,均支持节点的勾选和搜索。在搜索时,由于树形结构的数据特点,往往采用完全匹配的方式进行。搜索功能单一,无法满足多样化的用户需求。
4.针对上述现象,针对树形结构数据,如何提高搜索功能的灵活性,是亟需解决的问题。


技术实现要素:

5.本发明实施例提供一种搜索方法、装置、设备、存储介质及程序产品,实现了非完全匹配的搜索方式,提高了树形结构数据搜索的灵活性,实现了批量搜索的功能。
6.第一方面,本发明实施例提供一种搜索方法,所述方法包括:
7.基于搜索输入框,获取搜索数组,其中,所述搜索数组包括至少一个搜索关键词;针对基础数据数组中的每个节点,获取所述节点的节点数据与所述搜索数组中的搜索关键词匹配的目标词,并将各个目标词设置为预设样式,其中,所述基础数据数组中的每个元素为所述搜索输入框对应的树形结构数据的各个节点的节点数据;根据处理后的所述基础数据数组,生成搜索结果。
8.在一种具体实施方式中,针对基础数据数组中的每个节点,获取所述节点的节点数据与所述搜索数组中的搜索关键词匹配的目标词,并将各个目标词设置为预设样式,包括:
9.针对基础数据数组中的每个节点,根据所述节点的节点数据中的显示文本,生成所述节点对应的字符串类型的第一中间变量;确定所述第一中间变量中与所述搜索数组中的搜索关键词匹配的目标词;为所述第一中间变量中的目标词添加所述预设样式对应的字符串;将所述第一中间变量的类型设置为节点类型,得到第二中间变量;将所述节点的显示文本更新为所述第二中间变量,并返回更新后的所述节点,以将所述节点的显示文本中的目标词设置为预设样式。
10.在一种具体实施方式中,针对基础数据数组中的每个节点,根据所述节点的节点数据中的显示文本,生成所述节点对应的字符串类型的第一中间变量,包括:
11.基于递归遍历的方式,遍历所述基础数据组中的每个节点,针对每个节点,根据所
述节点的节点数据中的显示文本,生成所述节点对应的字符串类型的第一中间变量。
12.在一种具体实施方式中,确定所述第一中间变量中与所述搜索数组中的搜索关键词匹配的目标词,为所述第一中间变量中的各个目标词添加所述预设样式对应的字符串,包括:
13.遍历所述搜索数组,针对所述搜索数组中的每个搜索关键词,判断所述第一中间变量中是否包括与所述搜索关键词匹配的目标词;
14.若包括,则为所述第一中间变量中的所述目标词添加所述预设样式对应的字符串。
15.相应的,将所述第一中间变量的类型设置为节点类型,得到第二中间变量,包括:
16.当所述搜索数组遍历完毕时,将所述第一中间变量的类型设置为节点类型,得到第二中间变量。
17.在一种具体实施方式中,在基于搜索输入框,获取搜索数组之后,所述方法还包括:
18.根据所述搜索数组中的每个搜索关键词,对所述基础数据数组的节点进行过滤,得到新的基础数据数组,其中,所述新的基础数据数组中各个节点的节点数据包括至少一个所述搜索关键词。
19.相应的,针对基础数据数组中的每个节点,获取所述节点的节点数据与所述搜索数组中的搜索关键词匹配的目标词,包括:
20.针对新的基础数据数组中的每个节点,获取所述节点的节点数据与所述搜索数组中的搜索关键词匹配的目标词。
21.在一种具体实施方式中,根据所述搜索数组中的每个搜索关键词,对所述基础数据数组的节点进行过滤,得到新的基础数据数组,包括:
22.基于递归遍历的方式,遍历所述基础数据数组中每个节点,针对每个节点,判断所述节点的节点数据中的显示文本是否包括所述搜索数组中至少一个所述搜索关键词;若是,则将所述节点的节点数据存储至所述新的基础数据数组。
23.在一种具体实施方式中,基于搜索输入框,获取搜索数组,包括:
24.检测所述搜索输入框是否存在输入的数据;若是,则基于预设字符,将所述搜索输入框中输入的数据分割为各个搜索关键字,以得到所述搜索数组。
25.在一种具体实施方式中,所述方法还包括:
26.根据所述树形结构数据的各个节点的节点数据,生成所述基础数据数组。
27.在一种具体实施方式中,根据树形结构数据的各个节点的节点数据,生成所述基础数据数组,包括:
28.遍历所述树形结构数据的各个节点,将各个节点的节点数据存储至预设的一维数组,以得到所述树形结构数据的基础数据数组。
29.在一种具体实施方式中,根据处理后的所述基础数据数组,生成搜索结果,包括:
30.根据处理后的所述基础数据组中各个节点的节点数据,生成新的树形结构数据;显示所述新的树形结构数据。
31.第二方面,本发明实施例提供一种搜索装置,所述装置包括:
32.搜索数组获取模块,用于基于搜索输入框,获取搜索数组,其中,所述搜索数组包
括至少一个搜索关键词;数据处理模块,用于针对基础数据数组中的每个节点,获取所述节点的节点数据与所述搜索数组中的搜索关键词匹配的目标词,并将各个目标词设置为预设样式;结果生成模块,用于根据处理后的所述基础数据数组,生成搜索结果。
33.第三方面,本发明实施例提供一种搜索设备,包括:
34.处理器,存储器以及通信接口;
35.所述存储器用于存储所述处理器的可执行指令;
36.其中,所述处理器配置为经由执行所述可执行指令来执行第一方面任一项所述的搜索方法。
37.第四方面,本发明实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述的搜索方法。
38.第五方面,本发明实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现第一方面任一项所述的搜索方法。
39.本发明实施例提供的搜索方法、装置、设备及存储介质,适用于对树形结构数据进行关键词搜索的应用场景,当用户在搜索输入框内输入数据之后,基于搜索输入框内输入的数据,得到包括各个搜索关键词的搜索数组,遍历搜索输入框对应的树形结构数据的基础数据数组中的各个节点,以得节点数据中与搜索关键词匹配的目标词,其中,基础数据数组中的每个元素为搜索输入框对应的树形结构数据的各个节点的节点数据,改变各节点的节点数据中目标词的显示样式,如改为预设样式,从而得到处理后的基础数据数组,将该处理后的基础数据数组转换为树形结构数据,从而得到搜索结果,通过基于单个关键词进行逐一匹配的方式,实现了树形结构数据的批量搜索,使得仅命中部分搜索关键词的节点的显示文本被设置为预设样式,提高了树形结构数据搜索的灵活性。
附图说明
40.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
41.图1为本发明一个实施例提供的搜索结构的示意图;
42.图2为本发明实施例提供的搜索方法实施例一的流程示意图;
43.图3为本发明图2所示实施例中搜索结果的示意图;
44.图4为本发明实施例提供的搜索方法实施例二的流程示意图;
45.图5为本发明图3所示实施例中树形结构数据的另一种搜索结果的示意图;
46.图6为本发明实施例提供的树形控件实施例一的结构示意图;
47.图7为本发明实施例提供的搜索装置实施例一的结构示意图;
48.图8为本发明实施例提供的一种搜索设备的结构示意图。
具体实施方式
49.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在根据本实施例的启示下作出的所有其他实施例,都属于本发明保护的范围。
50.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
51.树形结构数据,是一种非线性结构数据,用于模拟具有树状结构性质的数据的集合。树形结构数据由多个节点组成,每个节点可以由0个或多个子节点,每个子节点形成一个分支,没有父节点的节点称为根节点,每一个非根节点有且只有一个父节点。在树形结构数据中,一个节点的节点数据包括:显示文本(title、name等)、节点标识(key、id等),以及子节点(children)标识或父节点(parent)标识,每个节点的节点标识是唯一的,用于区分不同的节点,显示文本为该节点在用户界面显示的内容。
52.图1为本发明一个实施例提供的搜索结构的示意图,图1以商品分类的树形控件为例,如图1所示,用户可以通过树形控件的搜索框输入相应搜索的关键词,如“汽车”,则该树形控件基于搜索框中输入的内容对各个节点的显示文本进行完全匹配,得到包括搜索框中输入的内容的各个节点,并将包括各个节点的显示文本中的“汽车”二字加粗标红(图1中仅体现加粗效果),当子节点的显示文本中包括“汽车”时,默认将该子节点的父节点展开,以显示包括“汽车”的子节点。
53.当用户需要搜索多个关键词,以综合多种商品进行筛选时,如“汽车”和“首饰”,由于该树形结构数据中不存在同时包括“汽车”和“首饰”的节点,故树形控件不会改变树形结构数据,从而导致搜索结果为空,即不存在被加粗标红的文字,从而导致用户仅可以一次输入一种商品的关键词进行搜索,搜索效率低下。
54.针对现有技术中存在的问题,本发明提供一种支持批量搜索的搜索方法,其主要构思为:将树形结构数据转换为基础数据数组,将搜索框中输入的数据划分为多个关键词,得到搜索数组,遍历基础数据数组中的每个节点,以从各个节点的节点数据中,确定与各个关键词匹配的目标词改变目标词的显示样式,从而得到搜索结果,实现了基于单个关键词的单独匹配的方式,丰富了树形结构数据搜索的功能,提高了树形结构数据搜索的灵活性。
55.下面通过几个具体实施例对本发明提供的搜索方法的技术方案进行详细说明。
56.图2为本发明实施例提供的搜索方法实施例一的流程示意图,该搜索方法可以由搜索设备执行,如图2所示,该搜索方法具体包括以下步骤:
57.s201:基于搜索输入框,获取搜索数组。
58.其中,所述搜索数组包括至少一个搜索关键词。
59.在一些实施例中,搜索数组中可以包括多个搜索关键词,如两个、三个或者其他数量。
60.具体的,可以检测搜索输入框的输入事件,或者检测搜索输入框对应的搜索按钮(button)的点击事件,当该搜索按钮被按下或者接收到搜索输入框的输入事件时,则获取
搜索输入框内输入的数据,并根据搜索输入框内输入的数据,生成搜索数组。
61.可选的,根据搜索输入框内输入的数据,生成搜索数组,包括:
62.检测所述搜索输入框是否存在输入的数据;若是,则基于预设字符,将所述搜索输入框中输入的数据分割为各个搜索关键字,以得到所述搜索数组。
63.其中,预设字符可以包括空格、逗号、顿号、分号等字符中一种或多种。
64.示例性的,若搜索输入框内输入的数据为“汽车,手机平板”,则搜索数组可以为:{汽车;手机;平板}。
65.进一步地,若搜索输入框中不存在输入的数据,则基于原生结构树形数据生成显示结果。
66.进一步地,当搜索输入框中不存在输入的数据时,可以将搜索数组赋值为空数组,以基于该空数组与上述数据基础数据中各个节点的节点数据进行匹配,得到处理后的基础数据数组(由于不存在目标词,故处理后的基础数据数组与处理之前的基础数据数组相同),并基于处理后的基础数据数组,生成搜索结果。
67.进一步地,当搜索输入框中不存在输入的数据时,还可以将expandedkeys设置为空数组,以不开展各个节点。
68.s202:针对基础数据数组中的每个节点,获取所述节点的节点数据与所述搜索数组中的搜索关键词匹配的目标词,并将各个目标词设置为预设样式。
69.其中,所述基础数据数组中的每个元素为所述搜索输入框对应的树形结构数据的各个节点的节点数据。
70.其中,预设样式可以为将目标词的字体颜色设置为红色、黄色、绿色等不同与显示文本的颜色,还可以将各个目标词高亮加粗。
71.具体的,可以遍历基础数据数组中的每个节点,从而获取各个节点的显示文本;针对每个节点的显示文本,循环遍历搜索数组中的各个搜索关键词,以确定该节点的显示文本中的目标词。
72.具体的,在遍历基础数据中的各个节点时,可以按照层级,依次遍历基础数据数组中各层级的节点。
73.示例性的,以搜索关键词为“首饰”为例,其中一个节点的显示文本为“珠宝首饰”,将目标词设置为预设样式之后,该显示文本对应的代码可以为:

珠宝《span class=“select-title”》首饰’《/span》,“select-title”即上述预设样式对应的显示样式的类名。
74.s203:根据处理后的所述基础数据数组,生成搜索结果。
75.具体的,可以将处理后的基础数据数组中的各个节点的节点数据赋值给树形结构数据的各个节点,从而更新该树形结构数据,得到对应的搜索结果,通过渲染显示该搜索结果,以将各个目标词显示为预设样式。
76.可选的,根据处理后的所述基础数据数组,生成搜索结果,包括:
77.根据处理后的所述基础数据组中各个节点的节点数据,生成新的树形结构数据;显示所述新的树形结构数据。
78.具体的,可以将处理后的基础数据数组转换为树形结构数据,得到新的树形结构数据,从而基于该新的树形结构数据生成新的显示界面,得到搜索结果。
79.示例性的,图3为本发明图2所示实施例中树形结构数据的搜索结果的示意图,如
图3所示,针对图1中的树形结构数据,以两个搜索词为例,如“首饰”和“汽车”,通过运行本实施例提供的搜索方法,可以将各个节点的显示文本中的首饰或汽车关键词加粗,以标识该文本,如“汽车座椅”中的“汽车”、“珠宝首饰”中的“首饰”,从而实现以关键词为单位的批量搜索。
80.本实施例提供的搜索方法,适用于对树形结构数据进行关键词搜索的应用场景,当用户在搜索输入框内输入数据之后,基于搜索输入框内输入的数据,得到包括各个搜索关键词的搜索数组,遍历搜索输入框对应的树形结构数据的基础数据数组中的各个节点,以得节点数据中与搜索关键词匹配的目标词,其中,基础数据数组中的每个元素为搜索输入框对应的树形结构数据的各个节点的节点数据,改变各节点的节点数据中目标词的显示样式,如改为预设样式,从而得到处理后的基础数据数组,将该处理后的基础数据数组转换为树形结构数据,从而得到搜索结果,通过基于单个关键词进行逐一匹配的方式,实现了树形结构数据的批量搜索,使得仅命中部分搜索关键词的节点的显示文本被设置为预设样式,提高了树形结构数据搜索的灵活性。
81.在一些实施例中,在步骤s201之前、之后或者执行步骤s201的同时,上述搜索方法还可以包括以下步骤:
82.根据搜索输入框对应的树形结构数据的各个节点的节点数据,生成基础数据数组。
83.其中,搜索输入框对应的树形结构数据或原生树形结构数据为页面显示的树形实例对应的树形结构数据。节点数据可以包括该节点的显示文本、节点标识,还可以包括该节点的子节点或父节点的节点数据。节点数据可以包括节点的各个节点属性的值。
84.示例性的,以ant design组件库中的原生的树形控件为例,节点数据或元素可以包括key(节点标识)、title(显示文本)和children(子节点)。
85.在一些实施例中,基础数据数组可以为一个一维数组,一维数组中的每一项对应一个节点,该一维数组由所对应的节点的节点数据以及所对应的节点的父节点的节点元素组成。
86.具体的,可以将树形结构数据转换为一个一维数组,即上述基础数据数组,该基础数据数组中的每个元素,由对应的节点的节点标识、显示文本和该节点的父节点的节点元素组成。
87.可选的,根据树形结构数据的各个节点的节点数据,生成基础数据数组,包括:
88.遍历所述树形结构数据的各个节点,将各个节点的节点数据存储至预设的一维数组,以得到所述树形结构数据的基础数据数组。
89.具体的,可以基于递归遍历的方式,如前序遍历、中序遍历或后序遍历的方式,遍历树形结构数据的各个节点。
90.具体的,可以采用递归遍历的方式,即按照层级的顺序,逐层进行遍历,从而得到各个节点的节点数据,并基于各个节点的节点数据生成该树形结构数据的基础数据数组。
91.示例性的,树形结构数据的根节点的节点数据为[title:

珠宝首饰’,key:

6144,1’];该根节点包括3个子节点,节点数据分别为:[title:

黄金’,key:

6145,2’]、[title:

金银投资’,key:

6146,2’]和[title:

k金饰品’,key:

6147,2’];“黄金”对应的节点包括3个子节点,节点数据分别为:[title:

黄金吊坠’,key:

6148,3’]、[title:

黄金手镯’,
key:

6149,3’]和[title:

宝宝金饰’,key:

6150,3’];“金银投资”对应的节点包括4个子节点,节点数据分别为:[title:

投资金’,key:

6141,3’]、[title:

投资银’,key:

6142,3’]、[title:

工艺金’,key:

6153,3’]和[title:

工艺银’,key:

6154,3’],其中,“title”表示显示文本属性,“key”表示节点标识,节点标识中的最后一位数字可以表示节点对应的层级。上述树形结构数据对应的基础结构数据中的元素可以为:{key:

6144,1’,title:

珠宝首饰’,parentnode:null};{key:

6145,2’,title:

黄金’,parentnode:{key:

6144,1’,title:

珠宝首饰’,parentnode:null}};{key:

6148,3’,title:

黄金吊坠’,parentnode:{key:

6145,2’,title:

黄金’,parentnode:{key:

6144,1’,title:

珠宝首饰’,parentnode:null}}};依次类推,其中,“parentnode”表示当前节点的父节点。
[0092]
进一步地,在递归遍历树形结构数据的各个节点的同时,需存储当前节点的父节点元素,方便后续在完成匹配后,直接通过该节点找到其父级节点,从而将该父级节点加入到需要展开的节点集合中。如以ant design组件库为例,设置expandedkeys,即代表可自动展开的节点标识集合。
[0093]
在一些实施例中,可以预先对树形结构数据进行转换,以得到树形结构数据对应的基础数据数组,以便于为后续的搜索提供数据依据。
[0094]
在一些实施例中,可以在检测到树形结构数据对应的搜索框被选中时,对树形结构数据进行转换,以得到树形结构数据对应的基础数据数组。
[0095]
图4为本发明实施例提供的搜索方法实施例二的流程示意图,在上述实施例的基础上,对步骤s203进行进一步细化,以及在步骤s202之后增加基于搜索关键词对基础数据数组进行过滤的步骤,如图4所示,该搜索方法可以包括以下步骤:
[0096]
s401:根据树形结构数据的各个节点的节点数据,生成基础数据数组。
[0097]
s402:基于搜索输入框,获取搜索数组。
[0098]
s403:根据所述搜索数组中的每个搜索关键词,对所述基础数据数组的节点进行过滤,得到新的基础数据数组。
[0099]
其中,所述新的基础数据数组中各个节点的节点数据包括至少一个所述搜索关键词。
[0100]
具体的,通过步骤s403中的过滤可以将树形结构数据对应的基础数据数组中不包括任何搜索关键词的节点删除,从而减少基础数据数组的数据量,从而使得搜索结果对应的显示界面中仅显示包括搜索关键词的节点的显示文本。
[0101]
具体的,可以采用遍历搜索关键词和遍历基础数据数组中各个节点的显示文本的方式,对基础数据数组中的各个节点进行过滤,得到新的基础数据数组,从而仅保留显示文本或子节点的显示文本中包括至少一个搜索关键词的节点。
[0102]
示例性的,图5为本发明图3所示实施例中树形结构数据的另一种搜索结果的示意图,对比图3和图5可知,经过步骤s403的过滤操作之后,删除了图3的搜索结果中不包括搜索关键词的节点,大大减少了所显示的条目,以便于用户基于搜索结果进行决策。
[0103]
具体的,可以基于预设的过滤函数,如filter(),根据搜索数组中的每个搜索关键词,对基础数据数组的节点进行过滤,得到新的基础数据数组。
[0104]
可选的,根据所述搜索数组中的每个搜索关键词,对所述基础数据数组的节点进行过滤,得到新的基础数据数组,包括:
[0105]
基于递归遍历的方式,遍历所述基础数据数组中每个节点,针对每个节点,判断所述节点的节点数据中的显示文本是否包括所述搜索数组中至少一个所述搜索关键词;若是,则将所述节点的节点数据存储至所述新的基础数据数组。
[0106]
其中,递归遍历可以为前序遍历、中序遍历和后序遍历。
[0107]
具体的,可以基于递归遍历的方式以及各个节点的层级关系,确定各个节点的遍历顺序,基于遍历顺序依次对基础数据数组中的每个节点进行过滤处理,即判断该节点的节点数据中的显示文本是否包括搜索数组中至少一个所述搜索关键词;若是,则将该节点的节点数据存储至所述新的基础数据数组。
[0108]
具体的,当节点或其子节点的节点数据中的显示文本包括至少一个搜索关键词时,则将该节点的节点数据存储至新的基础数据数组。
[0109]
具体的,可以按照节点的层级,逐层对基础数据数组的各个节点进行遍历,针对当前层的当前节点,生成一个空的中间节点,如newchildren,判断该节点的显示文本是否包括至少一个搜索关键词,若是,则将该节点存储至该中间节点中;若否,则判断该节点是否包括子节点;若包括,则判断该节点的子节点的显示文本是否包括至少一个搜索关键词,若是,则仍将该节点存储至该中间节点中;依次类推,直至遍历该节点的全部子节点,得到该节点对应的中间节点,进而再对下一节点及其子节点进行过滤,依次类推,得到新的基础数据数组。即当前节点或当前节点的子节点的显示文本中包括至少一个搜索关键词,则将当前节点存储至中间节点中。
[0110]
进一步地,可以先判断当前层的各个节点的显示文本是否为空,若是,则结束;若否,则设置一个空的节点变量newchildren;判断当前节点是否符合过滤条件;若是,则在newchildren中加入当前节点;若否,则递归至该节点的子节点,对子节点采用相同的逻辑进行过滤,即判断各个子节点中是否存在符合过滤条件的子节点,若是,则在newchildren中加入该当前节点;若否,则返回该newchildren,从而得到当前层的当前节点的中间变量,依次类推,得到过滤后的基础数据数组。
[0111]
其中,节点符合过滤条件可以为节点的显示文本中包括至少一个搜索关键词。
[0112]
在一些实施例中,可以先执行步骤s402、s403再执行步骤s401,仅将步骤s403中的“基础数据数组”替换为“树形结构数据”,“新的基础数据数组”替换为“新的树形结构数据”,以及相应部分进行适应性修改即可。具体为:在根据搜索输入框内输入的数据,生成搜索数组之后,根据所述搜索数组中的每个搜索关键词,对所述树形结构数据的节点进行过滤,得到新的树形结构数据,其中,所述新的树形结构数据中各个节点的节点数据包括至少一个所述搜索关键词;根据新的树形结构数据的各个节点的节点数据,生成基础数据数组。即先执行过滤的步骤,再执行数据转换即步骤s401对应的步骤。
[0113]
s404:针对新的基础数据数组中的每个节点,根据所述节点的节点数据中的显示文本,生成所述节点对应的字符串类型的第一中间变量。
[0114]
其中,第一中间变量用于存放和转换节点中的显示文本及其属性。
[0115]
由于树形结构数据中的节点的属性或节点数据均为节点类型,无法进行关键词的多次匹配,为了便于进行批量匹配,设置了一个字符串类型的第一中间变量,将节点中的显示文本的内容赋值给该第一中间变量,从而基于该第一中间变量将节点中的显示文本转换为字符串,进而基于该第一中间变量进行多个搜索关键词的匹配。
[0116]
s405:确定所述第一中间变量中与所述搜索数组中的搜索关键词匹配的目标词。
[0117]
具体的,针对搜索数组中的每个搜索关键词,可以采用关键词匹配的方式,判断第一中间变量中是否包括该搜索关键词,若是,则确定第一中间变量中的搜索关键词为一个目标词。
[0118]
s406,为所述第一中间变量中的目标词添加所述预设样式对应的字符串。
[0119]
s407,将所述第一中间变量的类型设置为节点类型,得到第二中间变量。
[0120]
具体的,在各个搜索关键词匹配完毕之后,将当前的第一中间变量的类型设置为节点类型,得到第二中间变量。
[0121]
具体的,可以基于创建元素方法,将处理后的第一中间变量的类型指定为节点类型,从而将第二中间变量赋值给对应的节点(节点标识一致的节点)的显示文本。
[0122]
可选的,针对基础数据数组中的每个节点,根据所述节点的节点数据中的显示文本,生成所述节点对应的字符串类型的第一中间变量,包括:
[0123]
基于递归遍历的方式,遍历所述基础数据组中的每个节点,根据所述节点的节点数据中的显示文本,生成所述节点对应的字符串类型的第一中间变量。
[0124]
其中,递归遍历可以为前序遍历、中序遍历或后序遍历。
[0125]
通过递归遍历的方式,依次将基础数据数组中的每个节点的节点数据的显示文本赋值给第一中间变量,以对各个节点的显示文本进行关键词匹配。
[0126]
具体的,针对每个节点,均需要生成一个第一中间变量,以存放该节点的节点数据中的显示文本。采用递归遍历的方式,更符合树形结构数据的特点,通过与树形结构数据层数一致的递归调用实现对树形结构数据的各个节点的遍历。
[0127]
可选的,确定所述第一中间变量中与所述搜索数组中的搜索关键词匹配的目标词,为所述第一中间变量中的各个目标词添加所述预设样式对应的字符串,包括:
[0128]
遍历所述搜索数组,针对所述搜索数组中的每个搜索关键词,判断所述第一中间变量中是否包括与所述搜索关键词匹配的目标词;若包括,则为所述第一中间变量中的所述目标词添加所述预设样式对应的字符串。
[0129]
相应的,将所述第一中间变量的类型设置为节点类型,得到第二中间变量,包括:
[0130]
当所述搜索数组遍历完毕时,将所述第一中间变量的类型设置为节点类型,得到第二中间变量。
[0131]
具体的,通过遍历搜索数组中的各个搜索关键词,与节点的显示文本,如title,进行多次匹配,从而确定节点的显示文本中包含的各个目标词,进而为各个目标词添加预设样式对应的标签组成的字符串,从而使得该节点的目标词的显示样式为预设样式,如字体为红色,当搜索关键词全部遍历完毕时,第一中间变量中该节点的显示文本中的各个目标词均被添加预设样式对应的字符串,如被span标签包裹的字符串,进而将第一中间变量转换为节点类型的第二中间变量,返回该第二中间变量,以便于基于该第二中间变量进行显示。若该节点存在子节点,在对该子节点继续采用上述方式进行处理,得到该子节点对应的第二中间变量,依次类推,得到各个子节点的第二中间变量,从而基于各个第二中间变量得到搜索结果。
[0132]
s408,将所述节点的显示文本更新为所述第二中间变量,并返回更新后的所述节点,以将所述节点的显示文本中的目标词设置为预设样式。
[0133]
具体的,可以将第二中间变量赋值给对应的节点的显示文本属性,从而将对应的节点的目标词的显示样式修改为预设样式。
[0134]
进一步地,还可以根据统计各个节点的显示文本中包括的目标词的数量,针对同层级的各个节点,基于包括的目标词的数量确定各个节点在显示时的顺序。
[0135]
s409:根据处理后的所述基础数据数组中各个节点的节点数据,生成搜索结果。
[0136]
本实施例提供的搜索方法,适用于对树形结构数据进行关键词搜索的应用场景,对树形结构数据进行转换,得到对应的数组,以基于该数据进行关键词匹配;基于搜索输入框内输入的各个搜索关键词,对该数组进行过滤,从而仅保留显示文本中包括搜索关键词的各个节点,实现了基于关键词对原始树形数据进行过滤,仅显示包括关键词的条目,从而大大减少了搜索结果中的条目的数量,便于用户基于搜索结果进行决策;进而,遍历过滤后的基础数据数组中的各个节点,通过所设置的字符串型的中间变量,实现了显示文本的多次匹配,显示包括至少一个搜索关键词的各个节点,实现了树形结构数据的批量搜索,丰富了树形结构数据的搜索功能,提高了树形结构数据搜索的灵活性。
[0137]
图6为本发明实施例提供的树形控件实施例一的结构示意图,如图6所示,该树形控件600继承自原生树形控件,由搜索模块610、过滤模块620和渲染模块630组成。
[0138]
具体的,树形控件600可以通过在原生树形控件的基础上,封装一个自定义的搜索控件(如mutisearchtree)的方式实现。当用户在搜索输入框内按下回车键或者点击搜索按钮时,自定义的搜索控件启动,以执行上述实施例提供的搜索方法。
[0139]
其中,搜索模块610用于将树形结构数据中的各个节点的节点数据转换为平铺的一维数组,如tiletreedata,各个节点转换的该一维数组,即为上述基础数据数组;以及存储用户输入的搜索关键词,是一个由各个搜索关键词组成的一维数组,如searchlist或上述搜索数组。过滤模块620用于对搜索模块610输出的基础数据数组或tiletreedata进行过滤,从而仅保留符合过滤条件的节点,得到新的基础数据数组。渲染模块630用于对搜索模块610或过滤模块620输出的基础数据数组中的目标词进行渲染,从而生成搜索结果。
[0140]
具体的,可以通过引入该自定义的搜索控件mutisearchtree,在页面中加载并使用,以基于该搜索控件实现树形结构数据的批量搜索功能。
[0141]
具体的,经由搜索模块610,将树形结构数据中的各个节点的节点数据(treedata)转换为平铺的一维数组tiletreedata;经由搜索模块610,检测搜索输入框是否有输入内容;若是,则执行以下步骤:经由搜索模块610,将输入内容以预设字符分隔成为搜索数组searchlist,通过过滤模块620对各个treedata件过滤,得到新的treedata,并根据由各个新的treedata组成的tiletreedata以及searchlist,得到展开节点数组expandedkeys,将该expandedkeys和新的treedata输入渲染模块630,以得到搜索结果;若否,则执行以下步骤:将searchlist赋值为空数组,将expandedkeys设置为空数组,将该expandedkeys和treedata输入渲染模块630,以得到搜索结果。
[0142]
具体的,过滤模块620具体用于:递归遍历树数据treedata,判断当前节点是否有值;如果有则继续下一步,没有则结束;b)定义空节点newchildren,初始值为[];判断当前节点是否符合过滤条件,即当前节点的显示文本中是否存在searchlist中的搜索关键词,如果存在,则将当前节点加入到newchildren中,如果不存在,则递归该节点的子节点,如果子节点存在,且子节点也符合过滤条件,则将该当前节点加入到newchildren中,将
newchildren返回;从而得到过滤后的新的treedata或新的基础数据数组。
[0143]
具体的,渲染模块630具体用于递归遍历新的基础数据数组中的各个节点,首先定义当前节点的第一中间变量temptitle,用于存放和转换显示文本,如title属性,设置为字符串类型,默认值为当前节点的显示文本的值;循环遍历searchlist,如果当前节点的显示文本中包括搜索内容,则将第一中间变量temptitle赋值为带有预设样式对应的标签的字符串;进一步向后遍历,直至searchlist全部遍历完毕,将第一中间变量temptitle中的字符串通过createelement方法转换为实际的node节点,得到上述第二中间变量,然后将第二中间变量赋值给当前节点的显示文本这一属性,返回当前带有key、title属性的节点元素;如果还存在子节点,则继续执行上述步骤,以遍历所有节点。
[0144]
图7为本发明实施例提供的搜索装置实施例一的结构示意图;如图7所示,该搜索装置700包括:搜索数组获取模块710、数据处理模块720和结果生成模块730。
[0145]
其中,搜索数组获取模块710,用于基于搜索输入框,获取搜索数组,其中,所述搜索数组包括至少一个搜索关键词;数据处理模块720,用于针对基础数据数组中的每个节点,获取所述节点的节点数据与所述搜索数组中的搜索关键词匹配的目标词,并将各个目标词设置为预设样式,其中,所述基础数据数组中的每个元素为所述搜索输入框对应的树形结构数据的各个节点的节点数据;结果生成模块730,用于根据处理后的所述基础数据数组,生成搜索结果。
[0146]
可选的,数据处理模块720,包括:
[0147]
第一变量生成单元,用于针对基础数据数组中的每个节点,根据所述节点的节点数据中的显示文本,生成所述节点对应的字符串类型的第一中间变量;第一变量处理单元,用于确定所述第一中间变量中与所述搜索数组中的搜索关键词匹配的目标词,并为所述第一中间变量中的目标词添加所述预设样式对应的字符串;第二变量生成单元,用于将所述第一中间变量的类型设置为节点类型,得到第二中间变量;处理结果返回单元,用于将所述节点的显示文本更新为所述第二中间变量,并返回更新后的所述节点,以将所述节点的显示文本中的目标词设置为预设样式。
[0148]
可选的,第一变量生成单元,具体用于:
[0149]
基于递归遍历的方式,遍历所述基础数据组中的每个节点,针对每个节点,根据所述节点的节点数据中的显示文本,生成所述节点对应的字符串类型的第一中间变量。
[0150]
可选的,第一变量判定单元,具体用于:
[0151]
遍历所述搜索数组,针对所述搜索数组中的每个搜索关键词,判断所述第一中间变量中是否包括与所述搜索关键词匹配的目标词;若包括,则为所述第一中间变量中的所述目标词添加所述预设样式对应的字符串。
[0152]
相应的,第二变量生成单元,具体用于:
[0153]
当所述搜索数组遍历完毕时,将所述第一中间变量的类型设置为节点类型,得到第二中间变量。
[0154]
可选的,所述装置还包括:
[0155]
过滤模块,用于在基于搜索输入框,获取搜索数组之后,根据所述搜索数组中的每个搜索关键词,对所述基础数据数组的节点进行过滤,得到新的基础数据数组,其中,所述新的基础数据数组中各个节点的节点数据包括至少一个所述搜索关键词。
[0156]
相应的,数据处理模块720,具体用于:
[0157]
针对新的基础数据数组中的每个节点,获取所述节点的节点数据与所述搜索数组中的搜索关键词匹配的目标词,并将各个目标词设置为预设样式。
[0158]
可选的,过滤模块,具体用于:
[0159]
在根据搜索输入框内输入的数据,生成搜索数组之后,基于递归遍历的方式,遍历所述基础数据数组中每个节点,针对每个节点,判断所述节点的节点数据中的显示文本是否包括所述搜索数组中至少一个所述搜索关键词;若是,则将所述节点的节点数据存储至所述新的基础数据数组。
[0160]
可选的,搜索数组获取模块710,具体用于:
[0161]
检测所述搜索输入框是否存在输入的数据;若是,则基于预设字符,将所述搜索输入框中输入的数据分割为各个搜索关键字,以得到所述搜索数组。
[0162]
可选的,所述装置还包括:
[0163]
基础数据生成模块,用于根据所述树形结构数据的各个节点的节点数据,生成基础数据数组。
[0164]
可选的,基础数据生成模块,具体用于:
[0165]
遍历所述树形结构数据的各个节点,将各个节点的节点数据存储至预设的一维数组,以得到所述树形结构数据的基础数据数组。
[0166]
可选的,结果生成模块730,具体用于:
[0167]
根据处理后的所述基础数据组中各个节点的节点数据,生成新的树形结构数据;显示所述新的树形结构数据。
[0168]
本实施例提供的搜索装置可执行本发明任意实施例提供的搜索方法,具备执行方法相应的功能模块和有益效果。
[0169]
图8为本发明实施例提供的一种搜索设备的结构示意图。如图8所示,该搜索设备包括:
[0170]
处理器111,存储器112,以及通信接口113;
[0171]
所述存储器112用于存储所述处理器111的可执行指令;
[0172]
其中,所述处理器111配置为经由执行所述可执行指令来执行本发明任意实施例提供的搜索方法。
[0173]
可选的,存储器112既可以是独立的,也可以跟处理器111集成在一起。
[0174]
可选的,当所述存储器112是独立于处理器111之外的器件时,所述搜索设备还可以包括:
[0175]
总线,用于将上述器件连接起来。
[0176]
相关说明可以对应参见图2以及图4的步骤所对应的相关描述和效果进行理解,此处不做过多赘述。
[0177]
本发明实施例还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明任意实施例提供的搜索方法。
[0178]
本发明实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现本发明任意实施例提供的搜索方法。
[0179]
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通
过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0180]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或对其中部分或全部技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
再多了解一些

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

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

相关文献