服务热线:400-0033-166
万商云集 - 企业数字化选用平台

企业首选的

数字选用平台

美团是怎么实现搜索关键词自动匹配功能的?

2020-12-30 11:44:59 阅读(526 评论(0)

问题背景搜索关键字智能提示是搜索应用程序的标准配置。其主要功能是避免用户输入错误的搜索词,并将用户引导到相应的关键词,以改善用户的搜索体验。美团CRM系统有数百万企业。为了让用户快速找到目标业务,我们在solrcloud的基础上实现了业务搜索模块。用户主要输入商户名和商户地址进行搜索。为了提高用户的搜索体验和输入效率,本文实现了基于solr前缀匹配查询关键字的智能提示(Suggestion)实现。1.支持前缀匹配原则在搜索框中输入“海底”,以海底为前缀,在搜索框下显示“海底捞”、“海底捞火锅”、“海底世界”等搜索词;输入“万达”会提示“万达影城”、“万达广场”、“万达百货公司”和其他搜索词。2.由于汉字和拼音输入的特点,如果搜索自动提示可以支持拼音,它将给用户带来更大的方便,以避免切换输入方法。例如,输入“haidi与输入“海底”提示相同,输入“提示”关键词wanda与输入“万达”提示的关键字相同。3.支持多音字输入提示,如输入“chongqing”或者“zhongqing“重庆火锅”都能提示“重庆火锅”、“重庆烤鱼”、“重庆小天鹅”。4.支持拼音缩写输入。为了提高输入效率,有必要提供拼音缩写输入。例如,输入“hd应该能够提示“”haidi输入“类似关键词”wd“也可以提示“万达”关键词。根据用户的历史搜索行为,根据关键词的热度进行排序。为了提供sugest关键词的准确性,根据用户查询关键词的频率对最终查询结果进行排序,如输入[重庆,chongqing,cq,zhongqing,zq]—>[“重庆火锅”(f1)、“重庆烤鱼”(f2)、“重庆小天鹅”(f3)、>f2>F3。解决方案1。当用户输入前缀时,遇到许多提示候选人时,如何选择,哪些显示在前面,哪些显示在后面?这是一个搜索热的问题。用户使用搜索引擎搜索业务,会输入大量的关键字,每个输入是关键字投票,所以关键字输入越多,相应的查询更受欢迎,所以需要记录查询关键字,统计每个关键字的频率,方便提示结果按频率排序。搜索引擎将通过日志文件记录用户每次搜索使用的所有搜索串,每个查询串的长度为1-255字节。2.汉字拼音用户输入的关键字可能是汉字、数字、英语、拼音、特殊字符等。由于需要实现拼音提示,我们需要将汉字转换为拼音,并考虑在java中使用piny4j组件进行转换。3.考虑到支持拼音缩写的过程。chongqing”,"zhongqing"--->"cq",”zq4.多音字的全排列应支持多音字提示。查询串转换为拼音后,需要实现全排列组合。字符串多音字的全排列算法如下:Javacode将内容复制到剪贴板public static List getPermutationSentence(List> termArrays,int start) {    if (CollectionUtils.isEmpty(termArrays))        return Collections.emptyList();    int size = termArrays.size();    if (start < 0  || start >= size) {        return Collections.emptyList();    }    if (start == size-1) {        return termArrays.get(start);    }    List  List1);    if (CollectionUtils.isEmpty(strings)) {        return permutationSentences;    }    if (CollectionUtils.isEmpty(permutationSentences)) {        return strings;    }    Listnew ArrayList  for (String pre : strings) {        for (String suffix : permutationSentences) {            result.add(pre suffix);        }    }    return result;  }  索引和前缀查询方案 Trie树,TopK算法,即字典树,又称单词搜索树或键树,是一种树形结构,是哈希树的变种。典型的应用程序是用来统计和排序大量的字符串(但不限于字符串),因此搜索引擎系统经常用于文本字频统计。典型的应用程序用于统计和排序大量的字符串(但不限于字符串),因此搜索引擎系统经常用于文本字频统计。其优点是最大限度地减少不必要的字符串比较,查询效率高于哈希表。Trie是一棵存储多个字符串的树。相邻节点之间的边缘代表一个字符,使树的每个分支代表一个子串,而树的叶节点代表一个完整的字符串。与普通树不同的是,相同的字符串前缀共享相同的分支。例如,给出一组单词inn,int,at,age,adv,ant,我们可以得到以下Triee:从上图可以看出,当用户输入前缀i时,搜索框可能会显示以i为前缀的“in”,“inn”,”int"等待关键词,当用户输入前缀a时,搜索框中可能会提示以a为前缀的“ate等待关键词。这样,实现搜索引擎智能提示sugestion的第一步就清楚了,就是用trie树存储大量的字符串,当前缀固定时,存储相对较热的后缀。Topk算法用于解决统计热词的问题。解决TopK问题主要有两种策略:hashMap统计 hashmap统计:先预处理这批海量数据。具体方法是:将Key维护为Query字符串,Value维护为Query出现次数的HashTable,即hash_map(Query,Value),每次读一个Query,如果字串不在Table中,则添加字串,并将Value值设置为1;如果字串在Table中,则可以添加字串的计数,最终在O(N)Hash表完成了时间复杂性的统计。堆排序:借助堆的数据结构,找出TopK,时间复杂度为N‘logK。堆排序:借助堆的数据结构,找出TopK,时间复杂度为N‘logK。也就是说,借助堆结构,我们可以在log量级的时间内找到和调整/移动。因此,维护一个K(题目为10)大小的小根堆,然后通过300万的Query,分别与根元素进行比较。因此,我们最终的时间复杂度是:O(N) N'*O(logK),(N为1000万,N’为300万)。该方案的问题是:在构建索引和查询时,汉字应转换为拼音。查询完成后,拼音应转换为汉字显示,并考虑数字和特殊字符。两棵Trie树需要保持拼音和缩写。作为一个应用广泛的搜索引擎系统,Sugest智能提示Solr内置了智能提示功能,称为Sugest模块。该模块可以根据提示词文本选择智能提示,并支持通过建立索引词库来提示索引的某个字段。(详见solrwiki页面htp://wiki.apache.org/solr/Suggester)该方案的问题是,返回的结果是根据索引中字段的词频进行排序,而不是用户搜索关键字的频率,因此一些流行关键字不能排在前面。拼音提示,多音字,缩写或添加索引字段。方案3Solrcloud建立单独的collection,使用solr前缀查询实现上述问题。上述两个方案在实施过程中都存在一些问题 在处理汉字suggest时,Topk算法并不十分优雅,需要维护两棵Trie树,实施起来很复杂;Solr自带的sugest智能提示组件的问题是使用freq排序算法。返回结果完全基于索引中字符的出现次数,不考虑用户搜索单词的频率。因此,一些流行词不能排在更高的位置。因此,我们继续寻找更优雅的解决方案。因此,我们继续寻找一个更优雅的解决方案来解决这个问题。到目前为止,我们考虑为关键字建立索引collection,并使用solr前缀查询。copyField在solr中可以很好地解决我们同时索引多个字段(汉字,pinyin,abbre)当field的multivalued属性设置为true时,可以解决同一关键字的多音字组合问题。配置如下:schema.xml:XML/HTMLCode复制内容到剪贴板<field name="kw" type="string" indexed="true" stored="true" /><field name="pinyin" type="string" indexed="true" stored="false" multiValued="true"/><field name="abbre" type="string" indexed="true" stored="false" multiValued="true"/><field name="kwfreq" type="int" indexed="true" stored="true" /><field 

内容来源:网络,以上内容来源于网络,不代表本站观点,如有侵权,请联系删除。

推荐阅读

这三款手机大字体软件一定要给家里长辈安排起来

虽然现在的手机都是智能手机,但是,一些老年人是老花眼,对于手机上的字看不清楚,所以,一般会把字体放大才可以看清,但是,很多人都还不知道手机大字体软件有什么。因此不知道如何放大。 1、字体管家 专为安卓手机用户构建的字体样式下…查看详情

国内获得融资的6家移动CRM平台介绍

随着移动互联网时代到来,只能用于电脑的CRM客户管理系统已无法满足现代企业需求,因而催生出了移动CRM平台,也催生出许多的移动CRM平台厂商。而这些厂商中,也不乏优秀的、获得融资的移动CRM平台,接下来小万就为大家选出6家获得融资厂商,以做…查看详情

企业自己做网站建设,避免三大坑

现代企业愈发具有互联网经营意识,网站建设早已变成司空见惯的事情。不少初创企业做网站,或发展中企业网站改版升级,开始直接选择自己做网站建设。这在一定程度上能够帮助企业节省沟通成本,按照自己的想法来落实网站建设,但也无可厚非的带来了一些麻烦。企…查看详情

商标注册第19类属建筑材料,其中包括15个小项

商标注册是商标使用人取得商标专用权的前提和条件,只有经核准注册的商标,才受法律保护。“先申请先注册”的商标注册原则是中国确定商标专用权的基本准则。商标注册一共分了45类,商标注册申请人可根据实际情况进行类别选择。今天,小万就为大家详细介绍商…查看详情

背单词的软件哪个好用 好用的背单词app推荐

  很多人都跟我说不知道怎么记单词,而且很多人不知道怎么利用记单词软件来记单词,下面万商云集小编给大家推荐一下背单词的软件哪个好用 好用的背单词app推荐,希望能帮助到大家解决记单词的问题。  1、百词斩app  这个软件想必大家不会陌生…查看详情

版权纠纷属于民事还是刑事

版权纠纷通常属于民事范畴,而非刑事。以下是关于版权纠纷的基本解释和划分为民事性质的原因。 版权是指对作品的独占性权利,包括复制权、发行权、演出权等。当他人未经授权使用他人作品时,可能涉及版权侵权问题。根据大多数国家和地区的法律体系,版权纠纷…查看详情

网站seo推广 | 建站布局关键词,若流量不佳要诊断报告分析

网站seo推广,并非是在网站建设完成后才开始进行的。要想网站有曝光、有流量,应在网站建设初期就进行关键词布局,如此才能在后续的推广中更轻松。 图片来源于网络 ◆ 网站seo推广是什么?网站seo推广就是指基于网站建设平台所进行的一系列se…查看详情

为什么ERP系统实施难?应该怎样规避风险

中小企业在信息数字化的道路上徘徊不前,并不是看不到先进的技术和理念,其核心原因是ERP系统实施困难的问题没有得到良好的解决。目前通过实施ERP来提高企业自身的成本、速度、管理、质量、科技等方面的竞争优势,已成为中小企业的当务之急。谁能先一步…查看详情

苏州商标注册去哪里?通过这些渠道就能够完成商标注册

很多企业为了能够保护自己的品牌形象,都会设有商标设计,而且设计完商标之后也会进行商标注册,其实这对于企业来讲是非常重要的选择了,只有拥有了自己的商标注册之后,才能够得到产品的保护,也能够对自己的企业形象带来维护,而且企业商标也更是能够让消费…查看详情

全球比较出名的网站有哪些

在进行网站建设的时候,很多人也都会选择比较靠谱的平台,因为现在比较靠谱的网站建设公司才能够带来更好的网站建设效果也能够帮助企业得到好的发展,现在全球比较出名的网站有很多,在建站之前也应该要有了解。那么全球比较出名的网站有哪些呢?下面就来给大…查看详情

注意事项 | 企业要做好注册商标管理,维护也是一个重要环节

商标注册完成,证书拿到手后就可以不管不顾了?错!注册商标也是需要进行管理,尤其是对企业来说。往下翻看,了解更多关于注册商标管理的事项。 图片来源于网络 企业商标证书到手后,应如何做好注册商标管理? ◆ 事项一:保持联系若是委托代理机构代为注…查看详情

淘宝访客数是什么意思

  优质答案(1)  抖音小店总访客数指的是有多少用户点进了抖音小店的主页。点击数指的是有多少用户?点进了抖音小店的主页,同时点开了商品页面。  只有用户点开了商品页面才会计算点击数。  对于抖音小店来说,访客数以及点击率都是非常重要的两个…查看详情

ascii码是几位码

一个字符的标准ascii码是多少字节?一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。 奇校验规定:正确的代码一个字…查看详情

淘宝同城购怎么操作?

  优质答案(1)  是你买的东西,可能是在你的城市发给你的,所以说就会很快就到达你要的地址,然后你填的地址,然后就离你很近,然后就马上就能发货到你那里,然后一天之内可能就会给你送到或者几个小时就能给你送到,这就是同城发货,同城购买的话,应…查看详情

支付宝跑腿任务是干什么的?

  优质答案(1)  打开支付宝——全部应用——蚂蚁微客,点进去就可以看到服务界面,点击出门跑腿图标,就可以开始报名了,要芝麻信用分大于550分才可以的。  优质答案(2)  打开支付宝app,在首页点击进入全部功能页面;  然后在找到“蚂…查看详情

最新文章