搜索引擎技术

搜索引擎关键字智能提示的一种实现

纵然是瞬间 提交于 2019-12-10 07:07:34
搜索引擎关键字智能提示的一种实现 美团技术团队 问题背景 搜索关键字智能提示是一个搜索应用的标配,主要作用是避免用户输入错误的搜索词,并将用户引导到相应的关键词上,以提升用户搜索体验。 美团CRM系统中存在数以百万计的商家,为了让用户快速查找到目标商家,我们基于solrcloud实现了商家搜索模块。用户在查找商家时主要输入商户名、商户地址进行搜索,为了提升用户的搜索体验和输入效率,本文实现了一种基于solr前缀匹配查询关键字智能提示(Suggestion)实现。 需求分析 支持前缀匹配原则 在搜索框中输入“海底”,搜索框下面会以海底为前缀,展示“海底捞”、“海底捞火锅”、“海底世界”等等搜索词;输入“万达”,会提示“万达影城”、“万达广场”、“万达百货”等搜索词。 同时支持汉字、拼音输入 由于中文的特点,如果搜索自动提示可以支持拼音的话会给用户带来更大的方便,免得切换输入法。比如,输入“haidi”提示的关键字和输入“海底”提示的一样,输入“wanda”与输入“万达”提示的关键字一样。 支持多音字输入提示 比如输入“chongqing”或者“zhongqing”都能提示出“重庆火锅”、“重庆烤鱼”、“重庆小天鹅”。 支持拼音缩写输入 对于较长关键字,为了提高输入效率,有必要提供拼音缩写输入。比如输入“hd”应该能提示出“haidi”相似的关键字,输入“wd”也一样能提示出“万达

伍哥原创之用搜狗细胞词库制作mmseg词典

↘锁芯ラ 提交于 2019-12-06 20:25:20
【伍哥原创】 1,了解mmseg和libmmseg MMSeg是一个基于最大匹配算法的两种变体的中文单词识别系统。简单来说就是算法。 LibMMSeg 是Coreseek.com为 Sphinx 全文搜索引擎设计的中文分词软件包,其在GPL协议下发行的中文分词法,采用 Chih-Hao Tsai 的MMSEG算法。LibMMSeg 采用C++开发,同时支持Linux平台和Windows平台。 2,mmseg词典 mmseg分词算法是依赖于一个词典。丰富强大的词典决定了分词的质量。由于coreseek安装包自带词典是一般通用的,针对网络零售这个领域,需要补充一些词汇。所以有了制作mmseg词典的需求。 3,用搜狗细胞词库制作mmseg词典 操作的前提是安装好了coreseek(sphinx),请参考伍哥之前的文章。 终于入正题了,首先去搜狗拼音官网下载细胞词库。这里已淘宝专用词库为例,下载地址: http://pinyin.sogou.com/dict/cell.php?id=22416 。这里假设你把词库放到了/root/test 目录下面。 接着下载这个python脚本 scel2mmseg.py 到/root/test。这个脚本伍哥修改了,可以把scel的细胞词库转成mmseg格式的词典。 然后把coreseek安装目录的unigram.txt复制到/root/test

day01、爬虫和数据

倖福魔咒の 提交于 2019-12-06 03:33:00
1.1、数据由来 一些数据平台和政府企业公开的数据,这些数据基本上在企业级应用中没啥大的作用。 真正有用的数据还是需要爬虫工程师来爬去。 1.2、什么是爬虫 1、爬虫的定义   脚本,程序---> 自动抓取 万维网上信息的 程序 。 2、爬虫的分类 通用爬虫 聚焦爬虫 3、爬虫的作用 解决冷启动的问题。 搜索引擎的根基。做搜索引擎,必须使用爬虫。 帮助机器学习建立知识图谱。 机器学习最终的是训练集。训练集可以靠爬虫爬去 可以制作比较软件。 1.3、爬虫工程师的发展历程 1、初级工程师 web 前端的知识: HTML、CSS、JavaSc1ipt、 DOM、 DHTML 、Ajax、jQuery、json 等; 正则表达式, 能提取正常一般网页中想要的信息,比如某些特殊的文字, 链接信息, 知道什么是懒惰, 什么是贪婪型的正则; 会使用 XPath 等获取一些DOM 结构中的节点信息; 知道什么是深度优先, 广度优先的抓取算法, 及实践中的使用规则; 能分析简单网站的结构, 会使用urllib或requests 库进行简单的数据抓取。  在解决web项目问题时,流程如下:   前端---> javascript---> python---> sql查询--->数据库 2、中级工程师 了解什么是Hash,会简单地使用MD5,SHA1等算法对数据进行Hash一遍存储 熟悉HTTP

互联网架构演进模型

别来无恙 提交于 2019-12-05 16:35:16
6、使用反向代理和CDN加速网站响应 为了进一步加快网站的访问速度,可以考虑使用CDN和反向代理。CDN部署在网络提供商的机房,当用户访问时,可以从距离用户最近的网络提供商机房获取数据。反向代理部署在网站自己的中心机房,当用户请求到达机房时,优先访问的服务器是反向代理服务器,如果反向代理中缓存了用户请求的资源,那么就直接返回给用户,加快了响应的速度,也减轻了后端负载的压力。CDN与反向代理的基本原理都是缓存。 这一阶段涉及到的知识体系: 需要了解CDN和反向代理相关的知识 | 7、数据库的分库分表(垂直/水平拆分)及分布式文件系统 我们的网站演进到现在,用户、商品、交易的数据都还在同一个数据库中。尽管采取了增加缓存,读写分离的方式,但随着数据库的压力继续增加,数据库的瓶颈越来越突出,此时,我们可以采用分库分表两种方法进行解决。 分库: 又叫垂直拆分 ,就是把数据库中不同的业务数据拆分到不同的数据库中,结合现在的例子,就是把用户、商品、交易的数据分开。优点:解决了原来把所有业务放在一个数据库中的压力问题,可以根据业务的特点进行更多的优化。缺点:需要维护多个数据库。 分库所遇到的问题: 1)需要考虑原来跨业务的事务;2)跨数据库的join 解决方案: 在应用层尽量避免跨数据库的事物,如果非要跨数据库,尽量在代码中控制。我们可以通过第三方应用来解决,如上面提到的mycat

搜索引擎5

╄→гoц情女王★ 提交于 2019-12-05 02:22:49
面试题 es 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片? 面试官心理分析 这个问题,包括后面的 redis 什么的,谈到 es、redis、mysql 分库分表等等技术,面试必问!就是你生产环境咋部署的?说白了,这个问题没啥技术含量,就是看你有没有在真正的生产环境里干过这事儿! 有些同学可能是没在生产环境中干过的,没实际去拿线上机器部署过 es 集群,也没实际玩儿过,也没往 es 集群里面导入过几千万甚至是几亿的数据量,可能你就不太清楚这里面的一些生产项目中的细节。 如果你是自己就玩儿过 demo,没碰过真实的 es 集群,那你可能此时会懵。别懵,你一定要云淡风轻的回答出来这个问题,表示你确实干过这事儿。 面试题剖析 其实这个问题没啥,如果你确实干过 es,那你肯定了解你们生产 es 集群的实际情况,部署了几台机器?有多少个索引?每个索引有多大数据量?每个索引给了多少个分片?你肯定知道! 但是如果你确实没干过,也别虚,我给你说一个基本的版本,你到时候就简单说一下就好了。 es 生产集群我们部署了 5 台机器,每台机器是 6 核 64G 的,集群总内存是 320G。 我们 es 集群的日增量数据大概是 2000 万条,每天日增量数据大概是 500MB,每月增量数据大概是 6 亿,15G。目前系统已经运行了几个月,现在 es 集群里数据总量大概是

Python分布式爬虫打造搜索引擎

匿名 (未验证) 提交于 2019-12-02 22:51:30
Python分布式爬虫打造搜索引擎 部分课程截图: 链接: 提取码:ik1n 免费分享,如若链接失效请加群 其它 资源在群里,私聊管理员即可免费领取;群――487712774,点击加群 ,或扫描二维码 第1章 课程介绍 介绍课程目标、通过课程能学习到的内容、和系统开发前需要具备的知识 1-1 python分布式爬虫打造搜索引擎简介 试看 第2章 windows下搭建开发环境 介绍项目开发需要安装的开发软件、 python虚拟virtualenv和 virtualenvwrapper的安装和使用、 最后介绍pycharm和navicat的简单使用 2-1 pycharm的安装和简单使用 2-2 mysql和navicat的安装和使用 2-3 windows和linux下安装python2和python3 2-4 虚拟环境的安装和配置 第3章 爬虫基础知识回顾 介绍爬虫开发中需要用到的基础知识包括爬虫能做什么,正则表达式,深度优先和广度优先的算法及实现、爬虫url去重的策略、彻底弄清楚unicode和utf8编码的区别和应用。 3-1 技术选型 爬虫能做什么 3-2 正则表达式-1 3-3 正则表达式-2 3-4 正则表达式-3 3-5 深度优先和广度优先原理 3-6 url去重方法 3-7 彻底搞清楚unicode和utf8编码 第4章 scrapy爬取知名技术文章网站

搜索引擎选型调研文档

十年热恋 提交于 2019-12-02 18:45:26
Elasticsearch简介 * Elasticsearch是一个 实时的 分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。 它可以用于 全文搜索, 结构化搜索以及 分析,当然你也可以将这三者进行组合。 Elasticsearch是一个 建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架。 但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene。需要很多的学习了解,才能明白它是如何运行的,Lucene确实非常复杂。 Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只需要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理。 当然Elasticsearch并不仅仅是Lucene这么简单,它不但包括了全文搜索功能,还可以进行以下工作: 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。 实时分析的分布式搜索引擎。 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。 这么多的功能被集成到一台服务器上,你可以轻松地通过客户端或者任何你喜欢的程序语言与ES的RESTful API进行交流。 Elasticsearch的 上手是非常简单的。它附带了很多 非常合理的默认值

elasticsearch搜索引擎

☆樱花仙子☆ 提交于 2019-12-02 18:10:34
一,什么事倒排序索引 elaticsearch是面向文档型的,将文档序列化未JSON形式,顺序缩影的过程是已知文档,查处文档中保航的字符串,从文件到字符串的映射,但是elaticsearch是已知字符串查找文档,即建立字符串和文档的映射,这种映射被称为倒排索引。 二,elasticsearch如何使用倒排序索引完成全文检索功能 1,创建索引: 1.1 已知文档,将文档交给分词器进行分词处理,分成一个一个档次,去除标点符号和停用词等 1.2 将单词交给语言处理组件,提取词根 1.3 将单词传给索引组件,处理成字典,按照字母顺序排序,合并相同的单词,成文倒排链表 2,搜索索引: 2.1 根据用户输入的数据进行词法,语法和语言处理,提取关键字和普通单词,得到语法树 2.2 利用语法树进行索引搜索,将结果与搜索内容的相关性进行排序返回 Elasticsearch 全文检索的基本思路:对非结构化数据顺序扫描很慢,对结构化数据的搜索却相对较快(由于结构化数据有一定的结构可以采取一定的搜索算法加快速度),把我们的非结构化数据想办法弄得有一定结构,也就是将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后我们重新组织的有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引 。 全文检索大体分两个过程:1.索引创建

浅谈PageRank

你说的曾经没有我的故事 提交于 2019-12-02 03:24:27
浅谈PageRank 2017-04-25 18:00:09 guoziqing506 阅读数 17873 更多 https://blog.csdn.net/guoziqing506/article/details/70702449 分类专栏: 机器学习 信息检索 信息检索学习笔记 机器学习经典算法研究 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/guoziqing506/article/details/70702449 1996年,两位还在斯坦福大学攻读计算机理学博士学位的研究生,开始了一项研究:如何对互联网上“成万上亿”的网页进行排序。在当时看来,这只是发生在斯坦福的一个普通课题研究而已,然而包括其研究者在内,都没有意识到,这项研究最后的成果,会引发互联网搜索引擎领域一个划时代的变革。 这两位博士的名字相信大家都很熟悉了,他们正是后来大名鼎鼎的Google公司的创始人:拉里佩奇(Larry Page)和谢尔盖布林(Sergey Brin)。而Google作为全球最大的搜索引擎,在其创立之初,使用的核心算法正是我们今天要讲的PageRank. 搜索引擎的发展瓶颈 搜索引擎的根本用途在于根据用户的查询,快速而准确地从网络的海洋中找到用户最需要的网页

虽然关键词在首页,但我要把网站改好看点,对SEO没什么影响吧?

試著忘記壹切 提交于 2019-12-01 10:02:09
如果硬生生的用新网站覆盖掉老网站肯定是有影响的,要做一些专业的SEO过渡处理方法,才能把影响降低。网站排名之所以能上去,就是因为搜索引擎认可了老网站的很多网页,包括URL,内容,链接和各种属性已经认可了,改版势必会导致这些页面打不开,破快原有的内部链接结构,导致网站权重失衡,排名不稳。所以网站改版前要通知专业优化人员,让专业的人去做专业的处理,千万别直接就覆盖了,有很多切换和过渡的技术要做处理,不然网站很有可能被惩罚导致排名消失。 来源: https://www.cnblogs.com/caidiyezhu/p/11677873.html