文章目录
- 问题1:我们的应用中一般用什么来存储数据?
- 问题2:我们经常浏览新闻、博客、商品,存储这些数据的表都应有哪些字段?
- 问题3:在数据库中如何做下面的查询?以新闻表为例
- 问题4:当数据量变大时,这四个查询都变慢了,该如何优化?
- 问题5:索引的原理是怎样的?
- 问题6:索引的排序,是怎么排的?
- 问题7:在“新闻标题”列上建索引后,当我们查询 标题 = ‘钓鱼岛’
- 问题2:为什么称为倒排索引?
- 问题3:下面这两个索引可以合并在一起吗?
- 问题4:反向索引的记录数会不会很大?
- 问题5:如何建立这样一个索引
- 问题6:如果要开发一个中文分词器,你觉得该怎么实现对一句话进行分词?
- 问题7: java开源中文分词器有哪些?
- 问题8: 分词器在分词时能不能统计出词的出现次数、位置?有什么作用?
- 你、我、他、的、地、了、标点符号…..这些需要为其创建索引吗?
- 问题10: 当出现了新词了,该怎么办?
- 思考
- 思考1:反向索引更新:数据更新时,索引是不是必须得更新?好更新吗?
- 思考2 :反向索引是存储在内存中,还是磁盘中合适?反向索引会有多大?
- 思考3 :搜索引擎需要支持精确搜索吗?需要支持像数据库一样的多条件AND OR 组合搜索吗?
为什么需要搜索引擎
议题1:为什么需要搜索引擎?
问题1:我们的应用中一般用什么来存储数据?
问题2:我们经常浏览新闻、博客、商品,存储这些数据的表都应有哪些字段?
问题3:在数据库中如何做下面的查询?以新闻表为例
问题4:当数据量变大时,这四个查询都变慢了,该如何优化?
常用的数据库优化方法:
建索引、分区表
问题5:索引的原理是怎样的?
问题6:索引的排序,是怎么排的?
问题7:在“新闻标题”列上建索引后,当我们查询 标题 = ‘钓鱼岛’
,数据库会怎么去查?
而当我们查询 标题 LIKE ‘%钓鱼岛%’
,数据库该如何去查?
结论:
数据库适合结构化数据的精确查询,而不适合半结构化、非结构化数据的模糊
查询及灵活搜索(特别是数据量大时),无法提供想要的实时性。
议题2:如何做才能快速查询到与“钓鱼岛是中国的”有关的新闻?
问题2:为什么称为倒排索引?
英文原名Inverted index,失败地翻译成了倒排索引,正确翻译为:反向索引.
问题3:下面这两个索引可以合并在一起吗?
问题4:反向索引的记录数会不会很大?
问题5:如何建立这样一个索引
问题6:如果要开发一个中文分词器,你觉得该怎么实现对一句话进行分词?
问题7: java开源中文分词器有哪些?
问题8: 分词器在分词时能不能统计出词的出现次数、位置?有什么作用?
你、我、他、的、地、了、标点符号……这些需要为其创建索引吗?
这种词一般称为停用词,不会被索引
问题10: 当出现了新词了,该怎么办?
撩妹 老司机、软妹子、直男
议题3:如何做才能快速查询到与“钓鱼岛是中国的”有关的新闻?
议题3:有了反向索引了,如何进行搜索?
如想搜索与 “钓鱼岛是中国的” 相关的新闻
步骤是怎样的?
问题1:合并后列表该如何排序?
我们希望最相关的排在最前面
问题2: 相关性如何度量?
人可以通过读内容判定相关性,机器不懂人话。
得建立一套能评估相关性的模型
问题3:如何根据次数建立一个相关性评估模型?
复杂的相关性计算模型有
思考
思考1:反向索引更新:数据更新时,索引是不是必须得更新?好更新吗?
思考2 :反向索引是存储在内存中,还是磁盘中合适?反向索引会有多大?
思考3 :搜索引擎需要支持精确搜索吗?需要支持像数据库一样的多条件AND OR 组合搜索吗?
lucene简介
最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引
擎和索引引擎,部分文本分词引擎。Lucene的目的是为软件开发人员提
供一个简单易用的工具包,以方便在目标系统中实现全文检索功能,或
者是以此为基础建立起完整的全文检索引擎。
是Apache的子项目,网址:http://lucene.apache.org/
shard
一个index可能存储大量的数据,以至于一台机器存放不下,即使能承载,由单台机器查询全量数据,也相当耗时。为了解决这个问题,ES将index中数据分为多份,每份叫一个shard。
replica
replica即为shard的备份,每个shard可以有多个replica,其中一个位
primary shard,剩余的为replica shard。Replica除可以起到容错的作用外,还可以提高查询并发度。
Lucene在ES中的应用
ES将index的数据分为多份,每份叫一个shard,为了提高数据可用性,每个shard都会有冗余副本,每个副本实际上是一个Lucene index实例.
ES架构
模拟es运行小demo
https://github.com/hufanglei/daily-code/tree/es-demo1
收工!!