• 35648

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

Solr原理?为什么要用Solr?Solr为什么比较快? 原

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/jsh/2019/0628/4156.html

>>>

什么是Solr?

Solr是一个用java开发的基于lucene引擎的 全文搜索 平台,原理是倒排索引,从关键字到文档的过程,Solr的资源都是以Doc为对象进行存储的,每个文档都由一系列的field构成,每个field表示资源的一个属性,文档的fied可以被索引,用于提高性能的搜索效率,一般情况下文档都包含一个能唯一表示该文档的id字段。

 

Solr原理?

倒排索引

 

通过value查找key,假设文章1 内容为123,文章2 内容为 456,文章3 内容为 789,

Solr有个功能是分词,先把文章123导入到服务器后,文章1切成1,2,3 ,原本123是文章内容,分词后,123变为三个 单独的索引,1,2,3相当于key,文章为value,文章2 和3与1类似,切成456789六个索引,他们的value就是文章序号2和3.

 

索引为什么快?


索引以文件的形式存储在磁盘上,所以只使用更少的磁盘io 次数的数据结构更适合做索引。b 树和b+树是是多叉树,树的度大,所以高度低。内存和磁盘交互的单位是页,将b 树和b+树的一个节点的大小设置为一个页,能保证一次io 就能读到一个页,同时磁盘采用预读策略,一次性读取相邻的几个页,读入内存后在进行二分查找。

 

简单说就是因为索引使用B+树,空间换时间 。

 

为什么要用Solr?

随意的数据不可能是根据数据库的字段查询的,那是怎么查询出来的呢,为什么千奇百怪的关键字都可以查询出来呢?
答案就是全文检索工具的实现,luncence采用了词元匹配和切分词。举个例子:北京天安门----luncence切分词:北京  京天  天安  安门  等等这些分词。所以我们搜索的时候都可以检索到。

有一种分词器就是IKanalyzer中文分词器,它有细粒度切分和智能切分,即根据某种智能算法。

这就使用solr的最大的好处:检索功能的实现。

Solr为什么比较快?

倒排索引,使用solr的分词过后吗,通过二分法与排序好的索引进行匹配,进而快速查到定位文档

空间换时间

 

操作:

主要是SolrTemplate完成文档操作和搜索

SolrTemplateQueryCriteria

solr会考虑集群
solr索引库在商品状态发生改变的时候(审核通过、删除),会通过activeMQ通知更新。
solr搜索结果,可以通过redis缓存

相关文章

暂住......别动,不想说点什么吗?
  • 全部评论(0
    还没有评论,快来抢沙发吧!