一种基于redis技术的搜索联想词实现方法技术

技术编号:15763258 阅读:884 留言:0更新日期:2017-07-06 00:34
本发明专利技术公开了一种基于redis技术的搜索联想词实现方法,该方法主要包括:搜索关键词预处理、创建索引、设置搜索意图权重、联想词结果展示。其中所述的创建索引主要为使用solrJ创建关键词指向搜索意图的索引、创建关键词前缀指向关键词的索引。根据本发明专利技术实施例,能够在用户进行搜索时候,通过分析用户输入的字符串,动态推荐关键词,使得用户更快找到所需关键词,从而改善了用户体验。

Implementation method of search association word based on redis Technology

The invention discloses a search association word realization method based on redis technology, which mainly comprises the following steps: searching keyword pretreatment, creating index, setting search intention weight and associating word result display. Among them, the creation index is mainly to use solrJ to create keywords, point to the index of search intention, and create keyword prefixes to index keywords. According to the embodiment of the invention, when the user searches, it dynamically recommends the keyword by analyzing the string inputted by the user, thereby enabling the user to find the required keywords more quickly, thereby improving the user experience.

【技术实现步骤摘要】
一种基于redis技术的搜索联想词实现方法
本专利技术涉及计算机应用
,尤其涉及一种基于redis技术的搜索联想词实现方法。
技术介绍
目前,对于一个网站来说,无论是门户网站还是电商网站,搜索框都有着比较重要的地位,它的存在是为了让用户更快、更方便的去搜索自己想要的东西。搜索联想词在各大门户和电商网站得到了广泛的应用,搜索智能提示功能,可以帮助用户尽快找到自己想要的。当用户输入想要搜索的首字符或其中被包含的字符时,搜索下拉框就会出现可供用户选择的条目,用户可以选择其中的条目来完成此次搜索,避免了用户输入全部的字符,改善了用户体验。搜索联想词功能通过分析用户输入字符串,动态推荐关键词,在个性化搜索中有着很重要的作用。现有的搜索联想词功能实现,比如,数据库中的like“%关键词%”来实现,但是只有包含关键词的词条才会命中,如果中间加个空格,这种方法就无能为力了,并且如果想对命中结果进行相关度排序,这种方法也无法实现。因此,针对现有方法存在不足,本专利技术提出一种基于redis技术的搜索联想词实现方法,能够使得用户快速找到搜索关键词,更能满足用户的需求。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种基于redis技术的搜索联想词的方法,在用户输入搜索关键词的过程中,系统给出搜索的推荐关键词。为达到上述目的,本专利技术的技术方案是这样实现的:A、搜索关键词预处理;B、创建索引;C、设置搜索意图权重;D、联想词的展示。其中所述步骤A处理过程为:对于一个搜索关键词的联想分为以下几种情况,文字相关、完整输入、拼音、首字母、文字前缀。判断关键词是否为空,是否长度为1,是否还有特殊字符,是否含有空格。其中所述步骤B主要包括以下两个流程:B1、使用solrJ创建关键词指向搜索意图的索引先对搜索关键词使用分词器(如,IKAnalyzer分词器)进行分词处理,加入到Redis有序集合(sortedset),需要注意的是:添加到Redis中时候,score的值设置为0,这些字符就会按照自然排好序。另外,搜索联想词功能,实时性要求比较高,需要频繁地请求数据库,本专利技术用性能高和速度快的内存数据库redis来存储。其中所采用的Redis是KV型数据库,查询都是基于key的,key值必须具有唯一性。B2、使用solrJ创建关键词前缀指向关键词的索引创建搜索关键词各种前缀的索引,首先通过用户的输入,来找到这个关键词,进而通过关键词找到搜索意图,所以需要建立文字前缀以及拼音前缀到关键词的一个索引。其中所述的拼音前缀使用pinyin4j进行转换,关键词拥有多少前缀,就会建立多少个有序集合key,每个key里都保存着value集合。其中所述步骤C主要操作如下:创建索引时候使用redis有序集合,这样每一个key所对应的集合都是有序的,并且每一个集合中的value都有score值,即通过score来排序。进一步地,其中所述步骤D操作如下:用户在搜索的时候,根据用户的输入去匹配搜索次数多的关键词,展示TopN个联想词。主要通过两个方法来实现:D1、创建一个getSuggestProductName(SolrQueryparams,StringsellerCode)方法,该方法联想的为商品名称,不是单个的词,最后返回一个List<String>联想词列表,其中所述的params为用户的搜索输入参数,sellerCode为索引库分片。D2、创建一个getSuggestLxc(SolrQueryparams,StringsellerCode)方法,该方法可根据拼音、拼音首字母联想,联想出来的为词组,不再是商品名称,最后返回一个List<String>联想词列表,其中所述的params为用户的搜索输入参数,sellerCode为索引库分片。本专利技术所提供的搜索联想词的方法,具有以下优点:1)用户在进行搜索时候,通过分析用户输入的字符串,动态推荐关键词,使得用户更快找到所需关键词;2)用户可以选择其中的条目来完成此次搜索,避免了用户输入全部的字符,改善了用户体验。附图说明图1为本专利技术基于redis技术的搜索联想词实现方法的流程示意图;图2为本专利技术基于redis技术的搜索联想词实现方法的应用场景示意图;图3为本专利技术基于redis技术的搜索联想词实现方法的联想结果展示示意图。具体实施方式为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图及本专利技术的实施例对本专利技术的基于redis技术的搜索联想词实现方法作进一步详细的说明。在用户输入搜索的过程中,系统给出搜索的推荐关键词,实现的方式通过redis的5种数据结构中的有序集合(zset)。把这些热搜词存进Redis中。就是把要操作的指令存放到一个队列中,最后把这个队列扔到服务端去执行,这样就有效的减少了不必要的网络传输,同时也提高了执行速度。参考图2,该搜索联想词的方法,具体包含以下几个流程:步骤201:搜索联想词预处理;判断关键词是否为空,是否长度为1,是否还有特殊字符,是否含有空格。步骤202:先把每个词拆分出来,存进redis中;对搜索关键词使用分词器(如,IKAnalyzer分词器)进行分词处理,加入到Redis有序集合(sortedset),注意添加到redis时score都设置为0,这些字符就会按照自然排好序。步骤203:创建关键词指向搜索意图的索引;创建搜索关键词各种前缀的索引,首先通过用户的输入,来找到这个关键词,进而通过关键词找到搜索意图,所以需要建立文字前缀以及拼音前缀到关键词的一个索引。其中所述的拼音前缀使用Java开源类库(如,pinyin4j技术)进行转换,关键词拥有多少前缀,就会建立多少个有序集合key,每个key里都保存着value集合。步骤204:设置搜索意图的权重;创建索引时候使用redis有序集合,这样每一个key所对应的集合都是有序的,并且每一个集合中的value都有score值,即通过score来排序。步骤205:搜索联想词展示;根据用户的输入去匹配搜索次数多的关键词,展示TopN个联想词。主要通过两个方法来实现:如果用户传入参数为lxcProductName,则执行步骤206,如果用户传入参数为lxc,则执行步骤207。步骤206:创建一个getSuggestProductName(SolrQueryparams,StringsellerCode)方法,该方法联想的为商品名称,不是单个的词,最后返回一个List<String>联想词列表,其中所述的params为用户的搜索输入参数,sellerCode为索引库分片。步骤207:创建一个getSuggestLxc(SolrQueryparams,StringsellerCode)方法,该方法可根据拼音、拼音首字母联想,联想出来的为词组,不再是商品名称,最后返回一个List<String>联想词列表,其中所述的params为用户的搜索输入参数,sellerCode为索引库分片。需要注意的是:用户点击搜索之后,无论是新的关键词还是已有的关键词,首先对关键词进行预处理,然后用redis中zincrby命令来处理,如果存在的,分数加1,或者就创建一个分数为1的成员。限制本文档来自技高网...
一种基于redis技术的搜索联想词实现方法

【技术保护点】
一种基于redis技术的搜索联想词的实现方法,其特征在于,该方法主要包括:A、搜索关键词预处理;B、创建索引;C、设置搜索意图权重;D、联想词结果展示。

【技术特征摘要】
1.一种基于redis技术的搜索联想词的实现方法,其特征在于,该方法主要包括:A、搜索关键词预处理;B、创建索引;C、设置搜索意图权重;D、联想词结果展示。2.根据权利要求1所述的基于redis技术的搜索联想词的实现方法,其特征在于,所述步骤A,具体为:判断关键词是否为空,是否长度为1,是否还有特殊字符,是否含有空格。3.根据权利要求1所述的基于redis技术的搜索联想词的实现方法,其特征在于,所述步骤B,具体包括:B1、使用solrJ创建关键词指向搜索意图的索引;B2、使用solrJ创建关键词前缀指向关键词的索引。4.根据权利要求1所述的基于redis技术的搜索联想词的实现方法,其特征在于,所述步骤C,具体为:创建索引时候使用redis有序集合,这样每一个key所对应的集合都是有序的,并且每一个集合中的value都有score值,即通过score来排序。5.根据权利要求1所述的基于redis技术的搜索联想词的实现方法,其特征在于,所述步骤D,具体为:联想词结果展示主要包括:联想出商品词、联想出商品名称。6.根据权利要求5所述的联...

【专利技术属性】
技术研发人员:王清霞刘宁周国辉姜林
申请(专利权)人:北京再塑宝科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1