solr权重设置_solr权重设置

 

 一:概念

  Solr是可扩展的、开箱即用的企业级搜索引擎,用来搜索大规模文本数据并根据相关度排序返回结果。

    1:可扩展——Solr通过集群中多台服务器的分布式运行实现扩展。

    2:开箱即用——Solr是开源的,易于安装和配置,并提供预先配置好的示例服务器,方便上手。

    3:为搜索优化——Solr速度很快,以亚秒级速度执行复杂查询,往往只需花费几十毫秒。

    4:大规模文档——Solr可以用以处理包含百万级文档的索引。

    5:以文本为中心

    6:根据相关度排序——Solr根据文档与用户查询的相关程度对文档进行排序,并以此排序返回结果。

 

 二:搜索引擎适用场景

   1:以文本为中心

   2:读主导

   3:面向文档

   4:灵活的模式(不像关系型数据库那样需要格式化数据,同一份索引可以包含不同的字段)

   5:处理大数据量

 

  三:Solr和Lucene的比较

  Lucene是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

  Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置(schema.xml文件、复制字段、动态字段)、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Solr Get操作提出查找请求,并得到XML格式的返回结果。

  注:Solr基于已有的XML、JSON和HTTP标准,提供简单的类REST风格的服务,由于Solr并没有严格遵守所有的REST原则,因此要避免为Solr基于HTTP的API打上REST的标记,例如:在Solr中,删除文档适用HTTP的POST方法,而不是用HTTP的DELETE方法。

  

  四:Solr的三个主要核心(子系统)

  1:文档管理

  2:查询处理

  3:文本分析

    Solr的每个子系统都是由模块化的 “管道” 构成的,通过插件的方式实现新功能。这意味着,没有必要推翻Solr的整个查询处理引擎,只需要在已有管道中介入新的搜索构件即可。这使得Solr的核心功能易于扩展,并能根据特定应用需求实现定制。

 

  五:Solr的可伸缩性

  Lucene是一个执行速度相当快的搜索类库,Solr汲取了Lucene速度方面的所有优点。但是无论Lucene有多快,由于CPU的IO限制,单台服务器终会达到来自不同用户的并发请求的处理上限。

  实现伸缩性的方法:

    1:Solr提供灵活的缓存管理功能,帮助服务器重用运算量大的数据扩容。(关于缓存后续再讲)

    2:Solr可以通过增加服务器实现增容(查询吞吐量的扩容、文档索引量的扩容)

  如果在三台服务器上复制索引,每秒查询数量会变成查询的三倍,因为每台服务器只用处理三分之一的查询请求。在现实中,完美的线性伸缩性很难实现,因此,增加三台服务器可能会比一台服务器增速2.5倍。

  注:关于硬件:Solr的确可以运行在虚拟机硬件上,但是搜索是IO和内存密集型应用。因此,首先应该考虑在高性能磁盘(如固态硬盘SSD非常理想)的高端硬件上部署Solr。

 

  六:Solr的容错性

  假设索引有4个分片,托管分片2的服务器断电了。这时,Solr无法继续索引文档和提供查询服务,搜索引擎基本就宕机了。为了避免这种情况,需要为每个分片添加副本。当分片2发生故障时,Solr可以启用副本来索引和处理查询,Solr集群能够保持联机状态。这种情况下故障虽然不会影响索引和查询,但由于少了一个处理请求的服务器,可能会降低速度。

  

  七:Solr功能概述

    用户体验功能

    1:分页与排序

    2:分面

    3:自动建议

    4:拼写检查

    5:搜索结果高亮

    6:地理空间搜索

    

    数据建模功能

    1:结果分组 / 字段折叠

    2:灵活的查询语法

    3:JOIN连接

    4:文档聚类

    5:支持各种文档格式,如PDF和Word

    6:从关系型数据库导入数据DIH

 

    Solr4以上新功能

    1:近实时搜索

    2:原子更新与乐观并发

      原子更新:原子更新功能允许客户端应用在已有的文档上进行添加、更新、删除和对字段的增值,而且无需重新发送整个文档。

      solr支持三种类型的原子更新:

        set - to set a field.  对指定的field,修改其为指定的值(也可以是Null)

        add - to add to a multi-valued field.  添加一个多值字段。

        inc - to increment a field.  对指定的数值型field,增加(在原有的数值上相加)指定的数值。

      乐观并发:solr使用特殊的_version_版本字段来确保文档的安全更新。对于两个用户同事更改同一个文档的情况,后提交更改的用户将会获得一个过时的版本字段,所以会更新失败。例如:A用户和B用户同时修改_version_版本号为1的文档,当A用户修改完毕提交,将版本号修改为2,那么B用户提交更改时候获取的版本号1已经过期,所以更新会失败。

    3:实时GET功能

    4:使用事务日志实现写持续性

    5:支持Solrcloud部署模式