您的位置:首页 > 技术参数

solr全文检索实现原理

日期:2019-01-03 19:24:30 点击:0 来自:本站 作者:

  solr那是我1年前使用到的一个搜索引擎,由于当初对于配置了相应了,但是今天突然面试问到了,哎,太久了,真的忘记了,今天特地写一篇博客记下来

  solr是一个独立的企业级搜索应用服务器,它对外t提供类似于web-service的api接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的xml文件,生成索引。;

  当然有的地方还会提到第三种,半结构化数据,如XML,HTML等,当根据需要可按结构化数据来处理,也可抽取出纯文本按非结构化数据来处理。

  一种是顺序扫描法(Serial Scanning):所谓顺序扫描,比如要找内容包含某一个字符串的文件,就是一个文档一个文档的看,对于每一个文档,从头看到尾,如果此文档包含此字符串,则此文档为我们要找的文件,接着看下一个文件,直到扫描完所有的文件。如利用windows的搜索也可以搜索文件内容,只是相当的慢。如果你有一个80G硬盘,如果想在上面找到一个内容包含某字符串的文件,不花他几个小时,怕是做不到。Linux下的grep命令也是这一种方式。大家可能觉得这种方法比较原始,但对于小数据量的文件,这种方法还是最直接,最方便的。但是对于大量的文件,这种方法就很慢了。

  有人可能会说,对非结构化数据顺序扫描很慢,对结构化数据的搜索却相对较快(由于结构化数据有一定的结构可以采取一定的搜索算法加快速度),那么把我们的非结构化数据想办法弄得有一定结构不就行了吗?

  这种想法很天然,却构成了全文检索的基本思路,也即将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。

  这种说法比较抽象,举几个例子就很容易明白,比如字典,字典的拼音表和部首检字表就相当于字典的索引,对每一个字的解释是非结构化的,如果字典没有音节表和部首检字表,在茫茫辞海中找一个字只能顺序扫描。然而字的某些信息可以提取出来进行结构化处理,比如读音,就比较结构化,分声母和韵母,分别只有几种可以一一列举,于是将读音拿出来按一定的顺序排列,每一项读音都指向此字的详细解释的页数。我们搜索时按结构化的拼音搜到读音,然后按其指向的页数,便可找到我们的非结构化数据——也即对字的解释。

  非结构化数据中所存储的信息是每个文件包含哪些字符串,也即已知文件,欲求字符串相对容易,也即是从文件到字符串的映射。而我们想搜索的信息是哪些文件包含此字符串,也即已知字符串,欲求文件,也即从字符串到文件的映射。两者恰恰相反。于是如果索引总能够保存从字符串到文件的映射,则会大大提高搜索速度。

  假设我的文档集合里面有100篇文档,为了方便表示,我们为文档编号从1到100,得到下面的结构

  每个字符串都指向包含此字符串的文档(Document)链表,此文档链表称为倒排表(Posting List)。

  比如说,我们要寻找既包含字符串“lucene”又包含字符串“solr”的文档,我们只需要以下几步:

  看到这个地方,有人可能会说,全文检索的确加快了搜索的速度,但是多了索引的过程,两者加起来不一定比顺序扫描快多少。的确,加上索引的过程,全文检索不一定比顺序扫描快,尤其是在数据量小的时候更是如此。而对一个很大量的数据创建索引也是一个很慢的过程。

  然而两者还是有区别的,顺序扫描是每次都要扫描,而创建索引的过程仅仅需要一次,以后便是一劳永逸的了,每次搜索,创建索引的过程不必经过,仅仅搜索创建好的索引就可以了。

  所谓停词(Stop word)就是一种语言中最普通的一些单词,由于没有特别的意义,因而大多数情况下不能成为搜索的关键词,因而创建索引时,这种词会被去掉而减少索引的大小。

  e) 利用查询树搜索索引,从而得到每个词(Term)的文档链表,对文档链表进行交,差,并得到结果文档。

  Solr简介Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Htt...来自:abcwanglinyong的博客

  Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操...来自:漫天雪_昆仑巅

  Solr简介 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过H...来自:的博客

  Solr原理 Solr对外提供标准的http接口来实现对数据的索引的增加、删除、修改、查询。在 Solr 中,用户通过向部署在servlet 容器中的 Solr Web 应用程序发送 HT...来自:汪翰翔的Blog

  Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get...来自:淡泊明志,宁静致远

  一、总论根据定义:Lucene是一个高效的,基于Java的全文检索库。所以在了解Lucene之前要费一番工夫了...来自:aiengelangte的专栏

  1. Solr的简介 ​ Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;...来自:的博客

  本教程对jetbrains全系列可用例:IDEA、WebStorm、phpstorm、clion等 因公司的需求,需要做一个爬取最近上映的电影、列车号、航班号、机场、车站等信息,所以需要我做一个爬虫...来自:昌昌

  Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操...来自:Jason的专栏

  13岁的北京学生张某,在去年12月27日19时新闻联播一则关于净化网络视听的新闻里,接受采访时说的话激起了轩然大波:“上次我上网查资料,突然弹出来一个网页,很黄很暴力,我赶紧把它给关了。”这个片段被C...来自:Kinb_huangwei的专栏

  一、搜索功能的流行方案由于搜索引擎功能在门户社区中对提高用户体验有着重在门户社区中涉及大量需要搜索引擎的功能需求,目前在实现搜索引擎的方案上有集中方案可供选择: 1、基于Lucene自己进行封装实现...来自:想作会飞的鱼的博客

  一、总论 根据定义: Lucene 是一个高效的,基于Java 的全文检索库。 所以在了解Luce...来自:tomorrow_C的博客

  Solr7.1---Getting Start 目前最新版的Solr是7.1.0 有个我还不清楚的地方是,为何5.5.X或者6.6.X版本还在更新,给我的感觉好像每一个大版本都有自己的维护团队...来自:点点的博客

  solr是什么呢?一、Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。二、Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式...来自:邵小小的博客

  全文检索引擎Solr系列—–全文检索基本原理 场景:小时候我们都使用过新华字典,妈妈叫你翻开第38页,找到“坑爹”所在的位置,此时你会怎么查呢?毫无疑问,你的...来自:xyz的博客

  摘要: 在Solr中,用户通过向部署在servlet容器中的 Solr Web 应用程序发送 HTTP 请求来启动索引和搜索/查询。索引 Solr的索引servlet可以接受下面四种形式的索引请求...来自:随-记的专栏

  本文我将为大家讲解全文检索技术——Lucene,现在这个技术用到的比较多,我觉得大家还是应该掌握一下,不说多精通,但是应该有所了解。在讲解之前,我们先来看一个案例,通过该案例引出全文检索技术——Luc...来自:李阿昀的博客

  本文转载至:场景:小时候我们都使用过新华字典,妈妈叫你翻开第38页,找到“坑爹”所在的位置,此时你会怎么查呢?毫无疑问,你...来自:漫天雪_昆仑巅

  借用百度对solr和lucenen技术的了解.百度百科是这样解释的Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务...来自:elsery

  1、Lucene是一个开放源代码的全文检索引擎工具包简介。 2、Solr简介 3、Lucene与Solr的区别 4、MongoDB的全文检索,以及全文检索中的中文支持情况说明...来自:ytangdigl的博客

  转载地址:采用Lucene搜索库为核心,提供全文索引和搜索开源企业平台,提供REST的HTTP/XML和JSON的API,如...来自:lixld的专栏

  本文为调研分布式检索系统的笔记整理,之前调研sphinx和coreseek的时候,发现国内的博客,还是讲怎么配置怎么安装多,原理性的东西并不多。本文为:官网文档阅读笔记(有些会附带上文档英文原文, 如...来自:Pilgrim

  Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索...来自:mischen520的博客

  前言 在美团CRM系统中,搜索商家的效率与公司的销售额息息相关,为了让BD们更便捷又直观地去搜索商家,美团CRM技术团队基于Solr提供了空间搜索功能,其中移动端周边商家搜索和PC端的...来自:MeituanTech的博客

  备注:学习Solr最好先了解一下Lucene的基本内容,不需要很熟,但是知道个基础即可。 大家可以关注我的微信公众号:Java菜鸟进阶之路 一:Solr简介        Solr是一个独立的企...来自:Cs_hnu_scw的博客

  原文转载于:主要介绍13款现有的开源搜索引擎,你可以将它们用在你的项目中以实现检索功...来自:农村的我的专栏

  目录结构: 1.全文检索 2.Lucene入门 3.Lucene进阶 全文检索一, 生活中的搜索: 1.Windows系统中的有搜索功能:打开“我的电脑”,按“F3”就...来自:CoderZS的博客

  看本文章的前提:你是java中级以上,否则绕道 网上各种教程讲解的比较详细 ,我这边值做记录,希望能简单粗暴的说名一下流程 1:安装          不讲解各种概念            a :...来自:ruanxianqing的博客

  Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操...来自:hmyixiu的博客

  前言本来以为网上已经有了类似博文,不想重复,可是一圈搜下来,都是一些内容不甚明了的文章,或者solr版本太过老,参考价值不高,更有甚者,直接拷贝的别人的内容。一篇博客,各大平台都能看到,也不见转载...来自:魂影魔宅

  关键点:倒排索引 参考文章:作为搜索,我们传统的方式(正排索引)是从关键点出...来自:upxiaofeng的专栏

  概要 Solr从4.0开始支持solrcloud模式,主要特性有: 配置文件集中式存储,集群中的配置文件存储在zookeeper中,仅保存一份,而过去是每个core一份配置文件,非常容易导致不一致...来自:Jason的专栏

  Solr 特点,Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,...来自:jokeylin的博客

  Solr提供了富文本查询的功能,要想理解solr实现的原理,需要对solr整个工作的流程有一定的认识。本文基于solr说明文档,讲述solr的查询流程。下图可以大致描述solr的查询流程 用户在客户端...来自:随-记的专栏

分页:
相关链接 Correlation Link
最新OA界面 New Article
  • 06-08
ASP
ASP
ASP
栏目热门 Class Hot
栏目推荐 Class Commend
版权所有:w88优德娱乐城 2016-2018 未经授权禁止复制或建立镜像 AG