Solr

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Solr相关的知识,希望对你有一定的参考价值。

1.solr简介

采用Java开发,基于Luncene的全文搜索服务器,同时对其进行了扩展(扩展了面向抽象编程的地方,比如分词器,查询),提供了比Lucene更为丰富的查询语言(比如,过滤器),同时实现了可配置(跟hadoop整合,之前索引结构写在代码中,现在提前定义好)、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

服务器 占用一个端口来提供服务  比如 可以加缓存  

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-serviceAPI接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http G SolrJ操作提出查找请求(也可以提交json格式),并得到XML格式的返回结果.

2.solrLucene的关系

2.1    Luncene是一套信息检索工具包,但并不包含搜索引擎系统,它包含了索引结构,读写索引工具、相关性工具(其他的搜索组件)、排序等功能,因此在使用luncene时你扔需要关注搜索引擎系统,例如数据获取、解析、分词等方面的东西。

 

2.2    首先solr是基于luncene做的,solr的目标是打造一款企业级的搜索引擎系统,因此它更接近于我们认识到的搜索引擎系统,它是一个搜索引擎服务,通过各种API可以让你的应用使用搜索服务,而不需要将搜索逻辑耦合在应用中。而且solr可以根据配置文件定义数据解析的方式,更像是一个搜索框架,它也支持主从(集群中的方式)、热换库(索引的数据与数据库的同步)等操作,还添加了高亮、facet(搜索组件)等搜索引擎常见功能的支持。

技术分享

技术分享

 

 

使用solrj  使用solrJava版的solrj来跟tomcat进行交互

schema.xml<field name=”id”(分词器名称) type=”string”(类型) indexed=”true”(是否建立索引) stored=”true”(是否存储) required=是否是必须存在” multiValued=”false” (是否允许有多个值)/>

<dy>

schema.xml 是用来定义索引数据中的域的,包括域名称,域类型,域是否索引,是否分词,是否存储,是否标准化即 Norms ,是否存储项向量等等。

为了改进性能,可以采取以下几种措施:

  • 将所有只用于搜索的,而不需要作为结果的field(特别是一些比较大的field)的stored设置为false
  • 将不需要被用于搜索的,而只是作为结果返回的fieldindexed设置为false
  • 删除所有不必要的copyField声明
  • 为了索引字段的最小化和搜索的效率,将所有的 text fieldsindex都设置成field,然后使用copyField将他们都复制到一个总的 text field上,然后对他进行搜索。
  • 为了最大化搜索效率,使用java编写的客户端与solr交互(使用流通信)
  • 在服务器端运行JVM(省去网络通信),使用尽可能高的Log输出等级,减少日志量。

 

solrconfig .xml 文件包含了大部分的参数用来配置Solr本身的。

 

以上是关于Solr的主要内容,如果未能解决你的问题,请参考以下文章

记录solrsolr7.2.1原子更新

大明聊SolrSolr查询语言 JSON Request API

solrsolr5.0整合中文分词器

SolrSolr实现简单的类似百度搜索高亮功能-2代码

SolrSolr实现简单的类似百度搜索高亮功能-1.配置Ik分词器

Solr环境搭建