一种文本信息的搜索方法及装置与流程

文档序号:33561190发布日期:2023-03-22 14:25阅读:61来源:国知局
一种文本信息的搜索方法及装置与流程

1.本发明涉及文本搜索的技术领域,尤其涉及一种文本信息的搜索方法及装置。


背景技术:

2.随着自然语言技术的发展,在不同应用场景中基于词语进行搜索相关信息已经逐步依赖于人工智能算法进行实现,尤其是,用户通常会通过录入文字词语等文本内容进行搜索信息,此时,执行端会通过算法模型对文字词语等进行搜索,从而搜索得到匹配的信息,以供用户使用。
3.其中一种常用的搜索方法是:采用搭载了ngram(n元语法分析器)的es索引分析器进行搜索分析,其具体操作是:将文本块转换为有区别的、规范化的词项,分析出来的词项列表和文档的映射关系会存储在倒排索引表中,每次查询会对每个词项在倒排索引表中快速匹配到文档,再将文档去重排序合并后返回给页面显示。
4.但目前常用的方法有如下技术问题:ngram分词设置的分词边界值过大,将文本块转换为有区别的词项,会产生大量冗余无用的词项,导致词项存储量大,浪费存储资源;而且由于分词边界值过大,导致每次搜索耗费大量时间进行分词,拖慢搜索性能,降低了搜索的效率。


技术实现要素:

5.本发明提出一种通用的文本搜索方法及装置,所述方法在获取用户输入的待搜索信息后,以待搜索信息的词组调整es索引中的ngram分词边界值,同时利用待搜索信息建立成可与es索引连接的匹配文档,在进行搜索时按照ngram分词边界值对信息进行分词,再将分词与匹配文档进行匹配,以筛选符合用户的待搜索信息,不但减少分词后的词项数量,避免产生大量冗余无用的词项,而且可以缩短搜索的时长,提升搜索的效率。
6.本发明实施例的第一方面提供了一种文本信息的搜索方法,所述方法包括:
7.获取用户输入的待搜索信息,基于所述待搜索信息包含的词组调整es索引中的ngram分词边界值,并利用所述待搜索信息建立成与es索引连接的匹配文档;
8.按照所述ngram分词边界值对待搜索文本信息进行分词得到若干个分词词项;
9.将所述分词词项与所述匹配文档进行文本匹配得到目标搜索文本。
10.在第一方面的一种可能的实现方式中,所述基于所述待搜索信息包含的词组调整es索引中的ngram分词边界值,包括:
11.统计所述待搜索信息包含的词组数量;
12.按照所述词组数量的数值将所述待搜索信息拆分成若干个名称词组,并确定所述名称词组的词语长度值;
13.按照所述词语长度值调整es索引中的ngram分词边界值。
14.在第一方面的一种可能的实现方式中,所述利用所述待搜索信息建立成与es索引连接的匹配文档,包括:
15.将所述待搜索信息添加至预设的空白文档中得到匹配文档;
16.调用es索引新增文档接口,并在所述文档接口中插入所述匹配文档。
17.在第一方面的一种可能的实现方式中,所述将所述分词词项与所述匹配文档进行文本匹配得到目标搜索文本,包括:
18.按照所述匹配文档对若干个所述分词词项进行短语匹配,得到若干个匹配短语;
19.对若干个所述匹配短语进行去重排序得到目标搜索文本。
20.本发明实施例的第二方面提供了一种文本信息的搜索装置,所述装置包括:
21.调整与建立模块,用于获取用户输入的待搜索信息,基于所述待搜索信息包含的词组调整es索引中的ngram分词边界值,并利用所述待搜索信息建立成与es索引连接的匹配文档;
22.分词模块,用于按照所述ngram分词边界值对待搜索文本信息进行分词得到若干个分词词项;
23.搜索模块,用于将所述分词词项与所述匹配文档进行文本匹配得到目标搜索文本。
24.在第二方面的一种可能的实现方式中,所述调整与建立模块,还用于:
25.统计所述待搜索信息包含的词组数量;
26.按照所述词组数量的数值将所述待搜索信息拆分成若干个名称词组,并确定所述名称词组的词语长度值;
27.按照所述词语长度值调整es索引中的ngram分词边界值。
28.在第二方面的一种可能的实现方式中,所述调整与建立模块,还用于:
29.将所述待搜索信息添加至预设的空白文档中得到匹配文档;
30.调用es索引新增文档接口,并在所述文档接口中插入所述匹配文档。
31.在第二方面的一种可能的实现方式中,所述搜索模块,还用于:
32.按照所述匹配文档对若干个所述分词词项进行短语匹配,得到若干个匹配短语;
33.对若干个所述匹配短语进行去重排序得到目标搜索文本。
34.相比于现有技术,本发明实施例提供的一种文本信息的搜索方法及装置,其有益效果在于:本发明可以在获取用户输入的待搜索信息后,以待搜索信息的词组调整es索引中的ngram分词边界值,同时利用待搜索信息建立成可与es索引连接的匹配文档,在进行搜索时按照ngram分词边界值对信息进行分词,再将分词与匹配文档进行匹配,以筛选符合用户的待搜索信息,通过调整后的ngram分词边界值进行分词,不但减少分词后的词项数量,避免产生大量冗余无用的词项,而且可以缩短搜索的时长,提升搜索的效率。
附图说明
35.图1是本发明一实施例提供的一种文本信息的搜索方法的流程示意图;
36.图2是本发明一实施例提供的跳词匹配的操作流程图;
37.图3是本发明一实施例提供的一种文本信息的搜索方法的操作流程图;
38.图4是本发明一实施例提供的一种文本信息的搜索装置的结构示意图。
具体实施方式
39.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
40.随着自然语言技术的发展,在不同应用场景中基于词语进行搜索相关信息已经逐步依赖于人工智能算法进行实现,尤其是,用户通常会通过录入文字词语等文本内容进行搜索信息,此时,执行端会通过算法模型对文字词语等进行搜索,从而搜索得到匹配的信息,以供用户使用。
41.其中一种常用的搜索方法是:采用搭载了ngram(n元语法分析器)的es索引分析器进行搜索分析,其具体操作是:将文本块转换为有区别的、规范化的词项,分析出来的词项列表和文档的映射关系会存储在倒排索引表中,每次查询会对每个词项在倒排索引表中快速匹配到文档,再将文档去重排序合并后返回给页面显示。
42.但目前常用的方法有如下技术问题:ngram分词设置的分词边界值过大,将文本块转换为有区别的词项,会产生大量冗余无用的词项,导致词项存储量大,浪费存储资源;而且由于分词边界值过大,导致每次搜索耗费大量时间进行分词,拖慢搜索性能,降低了搜索的效率。
43.为了解决上述问题,下面将通过以下具体的实施例对本技术实施例提供的一种文本信息的搜索方法进行详细介绍和说明。
44.参照图1,示出了本发明一实施例提供的一种文本信息的搜索方法的流程示意图。
45.其中,作为示例的,所述文本信息的搜索方法,可以包括:
46.s11、获取用户输入的待搜索信息,基于所述待搜索信息包含的词组调整es索引中的ngram分词边界值,并利用所述待搜索信息建立成与es索引连接的匹配文档。
47.其中,待搜索信息可以是用户所要搜索的文本的信息,待搜索信息可以是用户搜索的货物名称、企业名称、人员编号等。例如,“xx窗帘布”,“一元商品”,“xx糖果”等。
48.在确定用户的待搜索信息后,可以先确定待搜索信息包含的词组,然后基于各个词组调整es索引中的ngram分词边界值,从而调整搜索分词时的边界值,以避免因分词边界值过大而分词的词项数量过多,导致分词耗时长,存储词项数量大的情况。
49.接着,可以利用待搜索信息的内容建立匹配文档,利用匹配文档与es索引建立连接,从而能根据匹配文档在后续步骤进行信息匹配,以快速筛选查找得到用户所需的文本内容。
50.其中,作为示例的,步骤s11可以包括以下子步骤:
51.s111、统计所述待搜索信息包含的词组数量。
52.s112、按照所述词组数量的数值将所述待搜索信息拆分成若干个名称词组,并确定所述名称词组的词语长度值。
53.s113、按照所述词语长度值调整es索引中的ngram分词边界值。
54.例如,待搜索信息为“一元商品”,其包含词组包括“一”,“元”,“商”,“品”,统计得到其词组数量为4。
55.然后按照4将其拆分,分别得到“一”,“元”,“商”,“品”四个词组,然后获取每个词
组的词语长度值,其词语长度值为1。
56.最后以1作为分词边界值来调整es索引中的ngram分词边界值。
57.具体可以以词语长度值设置multi_match的参数:min_gram=1,max_gram=1。min_gram规定了分词后的词组最小长度,max_gram规定了分词后的词组最大长度。理解为1《=分词后每个词组长度《=1。
58.es在setting配置索引分析器analysis,假设名为ngram_analyzer的分词器,ngram_analyzer设置关键参数min_gram和max_gram设置为1,可以减少冗余存储,提升搜索速度。
59.为了进一步说明,假设原来的ngram分词边界值为64,其参数为min_gram=1,max_gram=64。本发明的参数为min_gram=1,max_gram=1。
60.下面是两种分词规则对“我是中国人”进行分词后得到所有词组:
61.原来参数的分词结果:“我”,“我是”,“我是中”,“我是中国”,“我是中国人”,“是”,“是中”,“是中国”,“是中国人”,“中”,“中国”,“中国人”,“国”,“国人”,“人”。
62.优化后的分词结果:“我”,“是”,“中”,“国”,“人”。
63.参照上述例子可知,ngram分词边界值过大,在分词时不会剔除任何词语,使得分词后的词项数量非常多,生成大量无用的词项。而调整ngram分词边界值后,分词的词项数量能大大减少,避免产生大量无用的词项。
64.调整后,min_gram规定了分词后的词组最小长度,max_gram规定了分词后的词组最大长度,
65.比如min_gram=3,max_gram=4,意思就是3《=分词后每个词组长度《=4,对“我是中国人”进行分词为:“我是中”,“我是中国”,“是中国”,“是中国人”,“中国人”,不会出现超过3个汉字长度的词组。
66.需要说明的是,ngram分词边界值也可以根据实际需要进行调整。例如,可以以多个词语长度值内的最小词语长度值进行调整,也可以以多个词语长度值内的最大词语长度值进行调整。
67.优化后的ngram分词的词项数量减少了6倍以上,大大节省了硬盘空间,同时提升了搜索速度。
68.在调整完ngram分词边界值后,可以以用户输入的待搜索信息设置匹配文档,方便后续的文本匹配。
69.其中,作为示例的,步骤s11还可以包括以下子步骤:
70.s114、将所述待搜索信息添加至预设的空白文档中得到匹配文档。
71.s115、调用es索引新增文档接口,并在所述文档接口中插入所述匹配文档。
72.在一实施例中,可以利用待搜索信息添加到一个空白文档中得到匹配文档,然后调用es索引新增文档接口,并在所述文档接口中插入所述匹配文档。
73.承接上述例子,可以将匹配文档调用es索引新增文档接口,插入一个值为“一元商品”的文档,用于后续测试搜索。
74.需要说明的是,用户可以根据需要设置不同的搜索语言,将该语言的文本设置成对应的匹配文档。方便用户采用各种不同的语言进行搜索,使用组成文本的任意一个词都能快速搜索出整个文本。
75.另外,本发明还支持无序搜索、跳词搜索。比如:我是中国人,搜索“我是人”、“中国我”都能搜索出来。
76.s12、按照所述ngram分词边界值对待搜索文本信息进行分词得到若干个分词词项。
77.待搜索文本信息是所要搜索的数据库信息。
78.具体地,可以按照ngram分词边界值(对应的multi_match的参数:min_gram=1,max_gram=1,min_gram规定了分词后的词组最小长度,max_gram规定了分词后的词组最大长度。理解为1《=分词后每个词组长度《=1)进行分词,分词。
79.假设待搜索文本信息一段话有5个汉字,可以就分5组词语,每组词语长度都为1。
80.又假设,待搜索文本信息一段话有10个汉字,可以就分10组词语,每组词语长度都为1。
81.s13、将所述分词词项与所述匹配文档进行文本匹配得到目标搜索文本。
82.由于分词后的分词词项可能包含多个与输入的待搜索信息不相关的分词词项或者内容,可以按照匹配文档的内容将若干个分词词项进行文本匹配筛选,得到相关的分词词项;然后将相关的分词词项进行组装,从而得到用户所需要的目标搜索文本。
83.在其中一种的实施例中,步骤s13可以包括以下子步骤:
84.s131、按照所述匹配文档对若干个所述分词词项进行短语匹配,得到若干个匹配短语。
85.s132、对若干个所述匹配短语进行去重排序得到目标搜索文本。
86.例如,待搜索文本信息一段话有10个汉字,可以就分10组词语,每组词语长度都为1。而用户所需要的待搜索信息为“一元商品”,同时将“一元商品”制作成匹配文档,可以按照匹配文档从10组词语筛选出“一”,“元”,“商”,“品”这4个分词词项,然后再按照匹配文档将这4个分词词项进行去重排序,得到“一元商品”信息。
87.在具体实现时,可以通过搜索代码实现。
88.以java语言实现举例,使用multi_match查询,设置参数slop为“30”,operator为“and”,实现短语组合匹配,跳词匹配。
89.slop参数告诉multi_match查询词项相隔多远时仍然能将文档视为匹配,operator设置为“and”指搜索的词项必须都在索引的同一个字段中才能匹配到文档。
90.例如:ngram倒排索引表存储:“一”,“元”,“商”,“品”词项列表和分别对应“一元商品”文档的映射关系。搜索关键字“一品”词项在倒排索引表中不存在,但是单个词项“一”、“品”是存在的,并且一”、“品”是在同一个字段中,
91.短语组合匹配就分别匹配到“一”和“品”对应的文档“一元商品”,再对搜索的文档数据进行去重排序。
92.然后通过关键字匹配到文档并返回,具体可以是将搜索到符合关键字的文档,返回“一元商品”给页面显示。
93.参照图2,示出了本发明一实施例提供的跳词匹配的操作流程图。
94.在一实施例中,所述短语匹配可以是跳词匹配。其中,跳词匹配要求所有的单词都需要按顺序出现,但是通过设置multi_match的参数slop值,单词就能按照任意顺序排列。
95.结合图2各词项对应的position理解slop原理,搜索词组为“我国”,设置slop=
10,由于“我”在position0直接找到了词项,因此不需要跳词,“国”在position1没找到,“国”进行跳一个词后到了position2,对应的是“中”,没有找到词项。
[0096]“国”进行跳两个词后到了position3,对应的是“国”,找到词项停止跳词。这时“我国”两个词项都查找到了,“我是中国人”这个文档符合搜索结果,返回给页面显示。
[0097]
如果slop长度大于词项的数量,比如“国”跳四个词,就会返回到position0的位置,也就是说如果跳词到了词项的尾部,再跳一词就会回到词项的头部,再从词项头部-》词项尾部循环进行跳词匹配,直到匹配到词项就结束。
[0098]
如果词项头部-》词项尾部一个完整的流程没有匹配到词项也会结束,也就是没有找到匹配的词项,说明这个文档不符合搜索条件。
[0099]
在进行去重排序使得各个短语组合匹配是,可以设置multi_match的参数operator=and,使用空格分隔的两个搜索词组各自都能使用短语匹配到文档,并且两个搜索词组在同一个文档中,视为整个搜索关键字匹配到文档。
[0100]
例如搜索“我人”,“我”和“人”分别在“我是中国人”匹配到,所以视为“我人”匹配到文档“我是中国人”。
[0101]
参照图3,示出了本发明一实施例提供的一种文本信息的搜索方法的操作流程图。
[0102]
在一具体实现方式中,文本信息的搜索方法的具体操作流程包括以下步骤:
[0103]
第一步、es索引配置。
[0104]
es在setting配置索引分析器analysis,假设名为ngram_analyzer的分词器,ngram_analyzer设置关键参数min_gram和max_gram设置为1,主要作用是减少冗余存储,提升搜索速度。
[0105]
第二步、新增一个文档。
[0106]
调用es索引新增文档接口,插入一个值为“一元商品”的文档,用于后续测试搜索。
[0107]
第三步、数据被ngram分词存储过程。
[0108]
使用ngram_analyzer对文档值“一元商品”(q:请解析说明,文档值是指什么,是否指上述s2的文档)进行划分成多个词项列表,词项列表和文档的关系保存到倒排索引表中,文档值存入索引字段中。
[0109]
第四步、页面输入搜索关键字。
[0110]
列举了用户可能输入的搜索关键字,全球其他国家的语言搜索以此类推。
[0111]
第五步、搜索代码实现。
[0112]
以java语言实现举例,使用multi_match查询,设置参数slop为“30”,operator为“and”,实现短语组合匹配,跳词匹配。
[0113]
slop参数告诉multi_match查询词项相隔多远时仍然能将文档视为匹配,operator设置为“and”指搜索的词项必须都在索引的同一个字段中才能匹配到文档。
[0114]
例如:ngram倒排索引表存储:“一”,“元”,“商”,“品”词项列表和分别对应“一元商品”文档的映射关系。搜索关键字“一品”词项在倒排索引表中不存在,但是单个词项“一”、“品”是存在的,并且一”、“品”是在同一个字段中,
[0115]
短语组合匹配就分别匹配到“一”和“品”对应的文档“一元商品”,再对搜索的文档数据进行去重排序。
[0116]
第六步、关键字匹配到文档并返回。
[0117]
搜索到符合关键字的文档,返回“一元商品”给页面显示。
[0118]
本发明配置简单,开发人员不需要额外安装es分词插件,只使用内置的ngram分析器就能满足所有国外语言的搜索需求,一处分词配置,解决全球语言分词兼容性问题的烦恼。同时分词的数量极少,既能满足业务需求又能节省硬盘空间,还能极大的提高搜索效率。
[0119]
在本实施例中,本发明实施例提供了一种文本信息的搜索方法,其有益效果在于:本发明可以在获取用户输入的待搜索信息后,以待搜索信息的词组调整es索引中的ngram分词边界值,同时利用待搜索信息建立成可与es索引连接的匹配文档,在进行搜索时按照ngram分词边界值对信息进行分词,再将分词与匹配文档进行匹配,以筛选符合用户的待搜索信息,通过调整后的ngram分词边界值进行分词,不但减少分词后的词项数量,避免产生大量冗余无用的词项,而且可以缩短搜索的时长,提升搜索的效率。
[0120]
本发明实施例还提供了一种文本信息的搜索装置,参见图4,示出了本发明一实施例提供的一种文本信息的搜索装置的结构示意图。
[0121]
其中,作为示例的,所述文本信息的搜索装置可以包括:
[0122]
调整与建立模块401,用于获取用户输入的待搜索信息,基于所述待搜索信息包含的词组调整es索引中的ngram分词边界值,并利用所述待搜索信息建立成与es索引连接的匹配文档;
[0123]
分词模块402,用于按照所述ngram分词边界值对待搜索文本信息进行分词得到若干个分词词项;
[0124]
搜索模块403,用于将所述分词词项与所述匹配文档进行文本匹配得到目标搜索文本。
[0125]
可选地,所述调整与建立模块,还用于:
[0126]
统计所述待搜索信息包含的词组数量;
[0127]
按照所述词组数量的数值将所述待搜索信息拆分成若干个名称词组,并确定所述名称词组的词语长度值;
[0128]
按照所述词语长度值调整es索引中的ngram分词边界值。
[0129]
可选地,所述调整与建立模块,还用于:
[0130]
将所述待搜索信息添加至预设的空白文档中得到匹配文档;
[0131]
调用es索引新增文档接口,并在所述文档接口中插入所述匹配文档。
[0132]
可选地,所述搜索模块,还用于:
[0133]
按照所述匹配文档对若干个所述分词词项进行短语匹配,得到若干个匹配短语;
[0134]
对若干个所述匹配短语进行去重排序得到目标搜索文本。
[0135]
所属技术领域的技术人员可以清楚地了解到,为方便的描述和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0136]
进一步的,本技术实施例还提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例所述的文本信息的搜索方法。
[0137]
进一步的,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序用于使计算机执行如上述实施例
所述的文本信息的搜索方法。
[0138]
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1