solr简介
solr是java开发的,基于Lucene的企业级开源 全文搜索平台。采用的是反向索引(倒排索引),以Document为对象进行存储,每个文档有一系列的Field构成,每个Field表示资源的一个属性,文档的Field可以被索引,以提供高性能的搜索效率。
写完简介我也忘得差不多了只记得了他是一个倒排索引
从小老师就让我们养成每天写日记的良好习惯,到目前为止我们写了好多好多了,好多是多少篇呢?是N篇日记了
然后你也总是没事翻翻回忆一下之前发生的事情。似乎自己回到了当初一般。
突然有一天你想起来我大三同学老王还欠我好多钱呢!这几天我这月光族再做最后挣扎,心想我一定要把这比巨款个要回来,让我解决一下温饱吧。然后我就打开微信给同学老王发了消息
--------------------------------------------------------------------------------------
嘿 老王 最近想死你了啊
。。。你怕不是饿的神经了吧
哎,月底了确实停不过去了啊。大学欠我的钱是不是要还还了
什么鬼,饿疯了吧 我什么时候欠你钱了
(我心想这老王 ,开始耍赖了啊。欠我那么多钱不打算还了啊,还好我还记得当初借我钱的原因)
你忘了么?那天你女朋友了来找你玩,你当时没钱了问我借了5000块 结果给你以后一星期都没回来啊
你女朋友走了以后你回宿舍愣是睡了一天一夜啊
我不记得了,我还说你欠我5000块钱呢 ,你不是有写日记
的习惯么,我记得你把这事写日记里了如果你要能找到我就给你
------------------------------------------------------------------------------------------
就这样结束了聊天,哎这个老王真狗啊,我只记得借我钱的事,怎么记的清楚到底哪天写的日记啊
这难道让我一篇一篇的翻么
作为程序员的我这么的懒怎么可能一篇篇的找啊,找到也下个月了
我把我目前的难题还原成以下业务场景
我有N多篇日记
我要从中找到一篇日记 搜索条件是老王借了我5000元
按照我们对数据库的理解 我每篇日记都上传到数据库 每写一篇日记都有一个自增的ID,这时候我如果知道这篇日记的ID我就能很容易找到我什么时候写了这篇日记 跟这篇日记的内容,但是呢我现在只知道文章一小段的内容,你让我怎么找文章的ID么,可能会想到模糊查询,但是我文章的内容都没有在数据库中啊只是存了一个路径,哎这下难办了,到嘴的钱跟着鸭子飞了。我现在只能使用正排索引(通过key 找到 value),那是不是有一种倒排索引的东西能让我解决这个问题呢 我需要的( 通过 value 找到 key)
然后我就找到了 solr 和 elasticsearch
那我选择用哪个呢 那就要看看他俩的区别了
相同点:核心的全文检索引擎工具包( lucene )是相同的
不同点:1. solr 利用 zookeeper 进行分布式管理 ,而elasticsearch自身带有分布式协调管理功能
2. solr 官方提供的功能比elasticsearch更多更丰富,而 elasticsearch 注重于核心功能,高级功能大多由第三方插件提供
3. solr 在传统搜索应用中表现较好,elasticsearch在实时搜索应用方面较好
唉! 脑子笨的我看完这概念又有点迷了
lucene 是什么呢???? 传统搜索跟实时搜索又是什么呢?? 只有弄懂这些我才知道我适用那种啊
先解释一下第二个简单的问题吧
传统搜索: 其实就是相对于实时的一种存在 就是指我搜索的内容是从静态数据库查出符合条件的结果,这种结果往往是不可改变的、静态的。
实时搜索:其实就比如说 我在百度都一个 现在北京天气如何 这种搜索往往是实时变化的 是不确定的
这个明白了吧
按这样理解的话 那我通过日记的内容搜索到日记的ID 使用 solr 就好了 。
但是 我虽然知道了 我使用solr就好了 但是 我还是想 搞明白 lucene 是什么
那好吧 咱们继续搞
然后我就在百度百科找到了下面内容
这么一大堆东西看我我都呕吐了 但是我注意到了几个关键的东西
luncence中使用的一款中文分词器IKanalyzer 具有细粒度切分和智能切分的能力
solr 提供了完整的查询引擎和索引引擎和部分文本分析引擎 是一个能实现全文检索功能的工具包
现在我们知道了他是什么 ,但是一篇文章那么多词,他是怎么存储的呢,还要保证快速搜索出来。
既然要说这部分内容我先去搬个小板凳去喽
首先拿到文章后solr会进行分词、创建索引库和文档数据库。
以上只是一个我根据理解画出来的大概的逻辑
第一个是solr产生的分词
第二个是对产生的分词进行存储
solr 会吧分词词组作为索引,用二分法将关键字与排序号的索引进行匹配进而查出对应的文档
哎 二分法也不会啊 下编文章学习二分法
学了solr后我赶紧搜出这篇日记,然后找老王 要回我的5000元
文章是自己学习的总结,如有问题望各位指出