| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 之前不了解的搜索引擎 -> 正文阅读 |
|
[大数据]之前不了解的搜索引擎 |
什么是搜索? ——?从形式上来说说什么是搜索? ?这个框叫做搜索。这是浏览器类型的搜索。 ? ?这个也叫搜索,这是电商类的搜索。 ?? ? ?不管是哪种类型的搜索,形式都一样。在框中输入你关心的内容,然后点搜索,返回和你关心相关的内容。 ?? ?搜索的几个核心需求
? 看起来需求很少,很简单。可就是这两个需求,一个稍微大点的公司,可能得几十个人来维护这个小小的搜索框。 ? 搜索速度,关系到了数据结构,关系到了搜索集群规模。 ? 搜索内容相关度高。这个是最难的,涉及到了非常多的算法。涉及到了自然语言处理、涉及到了且此、涉及到了相关性计算排序?等等 先说一下elasticsearch?和?lucene的关系? 提到搜索,应该多数人想到的是elasticsearch。利用elasticsearch来搭建搜索集群。elasticsearch是可以满足我们的搜索需求。但是实际上对数据的操作,核心处理,并不是它。而是?Lucene,另外一个开源的技术,由java语言编写的文本搜索函数库。而es的核心功能就是基于lucene做的。 ? 这里我暂时把lucene理解成?linux内核,而elasticsearch相当于是?centos或者?Ubuntu。其实不难理解,说起linux,大家很少提内核。更多的是想到centos这样的可直接使用的系统。同样的道理,提到搜索引擎,大家想到的是elasticsearch。 ? 即使没写核心的搜索算法,但是elasticsearch依然是非常出色的产品。在lucene这个搜索函数库上做了非常多的工作,以至于光芒掩盖了lucene。给我们提供了分布式管理,使它作为搜索引擎,更加具备扩展性,这点我们可以描述为集群管理。为我们提供可视化展示界面(kibana),为我们提供了一整套数据处理方案。 ? 如果你能把elasticsearch原理搞得很清楚的话,今后在公司搞分布式应用,应该是手到擒来的事情。es给我们提供了非常好的分布式架构经验。我们可以学习一下es是如何解决分布式问题的。 好好使用elasticsearch? 满足上边提到的搜索框的需求,好好学学?elasticsearch的API差不多够了。但是想要做到更加极致,在现有的基础上,还想有更加明显的提升。有两步,第一步是合理使用elasticsearch,合理规划集群,合理分配分片,合理配置机器资源。第二步应该去关注底层的存储原理了。还是建议有深度的学习一下?lucene这个核心搜索函数库。 一次搜索过程? 一次搜索过程,实际上有以下几个过程
关于分词器先说以下分词器如何工作分词器是专门处理分词的组件,分词器由以下三部分组成:
lucene支持的分词器??? 标准分词器:就是一个字一个字的。输入?中国的城市 ,?然后每各字当做一个词。?很鸡肋 ? 空格分词器:针对输入的内容,就按照空格给你分割。这很适用于英文。 ? 简单分词器:根据符号来分割。粒度太大了。很容易出现搜不出来结果的情况。 ? 二分分词器:这个也是很笨的分词方法,没有算法在里边。会造成很多的冗余。例如:输入?中国的城市,?分词结果就是:?中国 |?国的|?的城|?城市 。? ? 停用分词器 ? 中文智能分词器:这个分词结果基本上是我们想要的了。 ES支持的分词器?IK分词器加上自定义分词词库,就比较不错的解决方案。另外可以看看阿里达摩院的基于?NLP的分词器叫做?AliNLP 周末读了一本书《从lucene到Elasticsearch全文检索实战》? 这本书,就是入门级别的,如果英文水平不错的话,读官方文档更好一点。这就像一本一个翻译过来的es文档。没太大的作用。就是告诉你有哪些api,背后原理是什么,是没有的。如果想拿这本书拔高的话,这里劝退吧。 ? 在我看来最优价值的是第一章,对信息检索模型的认知。告诉我们相关的搜索算法。 ? 普通就像一道光,晴天下,不会引起任何人的注意。可是拿到黎明前的至黑至暗时刻,却又是那样的神圣。抓住这道普通的光,在至黑至暗的生活中凿开一个洞! ? 如果你就是觉得做的事情是平凡的,如果更加有深度的去研究一下呢?是不是就不平凡了? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 17:07:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |