solr_solrcloud - CSDN
solr 订阅
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。 展开全文
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
信息
外文名
Solr
类    型
计算机语言开发
中文名
企业级搜索应用服务器
功    能
提供API接口
Solr特点
Solr是一个高性能,采用Java开发, 基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
收起全文
  • Solr简介,理解

    千次阅读 2018-07-25 19:59:54
    简介 采用Java开发,基于Luncene的全文搜索服务器,同时对其进行了扩展(扩展了面向抽象编程的地方,比如分词器,查询),提供了比Lucene更为丰富的查询语言(比如,过滤器),同时实现了可配置(跟hadoop整合,之前...

    简介

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

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

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

    Solr与lucene的关系

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

    首先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 ,是否存储项向量等等。

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

    Solr性能优化

    • 将所有只用于搜索的,而不需要作为结果的field(特别是一些比较大的field)的stored设置为false

    • 将不需要被用于搜索的,而只是作为结果返回的field的indexed设置为false

    • 删除所有不必要的copyField声明

    • 为了索引字段的最小化和搜索的效率,将所有的 text fields的index都设置成field,然后使用copyField将他们都复制到一个总的 text field上,然后对他进行搜索。

    • 为了最大化搜索效率,使用java编写的客户端与solr交互(使用流通信)

    • 在服务器端运行JVM(省去网络通信),使用尽可能高的Log输出等级,减少日志量。

    展开全文
  • Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。
  • solr7.4教程 使用solr的完整流程

    万次阅读 多人点赞 2018-08-03 09:25:59
    由于最近公司业务可能需要用到solr所以花了几天时间研究了一下,发现solr在网上的教程没有太好的入门文章,要么文章所写的solr版本太老,要么就是介绍的内容不够完整。所有我打算写一篇有完整使用流程的solr教程希望...

           由于最近公司业务可能需要用到solr所以花了几天时间研究了一下,发现solr在网上的教程没有太好的入门文章,要么文章所写的solr版本太老,要么就是介绍的内容不够完整。所有我打算写一篇有完整使用流程的solr教程希望能让后面新接触solr的同学能更容易掌握它,另一方面也是对自己所学做一个梳理。由于本人水平有限如果有书写不对的地方还请多多指正,万分感谢。
     

    本文摘要

    一、下载与安装

    二、运行solr     

    三、创建core实例

    四、配置schema

    五、DIH导入数据

    六、solrJ(java客户端)

     

    本文所用到的工具

    Postman :简单说就是一个可以发送post请求的http客户端 这是官网地址https://www.getpostman.com/

    IKAnalyzer中文分词器 :一个第三方分词器,下载地址https://download.csdn.net/download/u010510107/10558538

     

    一、下载与安装:

    1.      下载:https://lucene.apache.org/solr/到官网点击Download下载。

    2.      下载完成后会得到一个压缩包,解压后会获得一个solr_7.4.0文件夹,此文件夹目录结构如下图

              

     

    二、运行solr

    Solr的运行分为单机运行和集群运行,这里以单机为例:

    1.      在bin目录下执行bin/solr start 此命令会启动solr应用服务器默认端口为8983,如果想指定端口号启动可以加参数–p例 如:solr start –p 8888.

    如图这句提示出现后证明服务启动成功(启动过程中如果打印java异常堆栈log4j2.xml 文件名、目录名或卷标语法不正确。没有关系不妨碍我们正常使用solr可以忽略此问题),接下来在浏览器输入http://localhost:8888/solr可以进入Admin UI界面验证是否启动成功如下图

    此界面是用来管理solr的,此时solr服务器已经可以启动成功啦下面介绍一下其他比较常用的solr命令。

    2. solr常用命令:

    solr start –p 端口号 单机版启动solr服务

    solr restart –p 端口号 重启solr服务

    solr stop –p 端口号关闭solr服务

    solr create –c name 创建一个core实例(core概念后面介绍)

    此外有关于solr集群版启动方式和其他更多的命令可以参看官方文档https://lucene.apache.org/solr/guide/7_4/solr-control-script-reference.html

     

    三、创建core实例:

    1.      core简介:简单说core就是solr的一个实例,一个solr服务下可以有多个core,每个core下都有自己的索引库和与之相应的配置文件,所以在操作solr创建索引之前要创建一个core,因为索引都存在core下面。

    2.      core创建:core的创建方式有很多种一下列出两种比较方便的。

    (1)      在bin目录下执行solr create –c name,创建一个core,默认创建出来的位置如下图

                    

     

    (2)      第二种方式是直接使用AdminUI页面创建一个core,如下图

                    

     

    四、  配置schema

    1.      schema简介:

           schema是用来告诉solr如何建立索引的,他的配置围绕着一个schema配置文件,这个配置文件决定着solr如何建立索引,每个字段的数据类型,分词方式等,老版本的schema配置文件的名字叫做schema.xml他的配置方式就是手工编辑,但是现在新版本的schema配置文件的名字叫做managed-schema,他的配置方式不再是用手工编辑而是使用schemaAPI来配置,官方给出的解释是使用schemaAPI修改managed-schema内容后不需要重新加载core或者重启solr更适合在生产环境下维护,如果使用手工编辑的方式更改配置不进行重加载core有可能会造成配置丢失,配置文件所在的路径如下图:

                    

     

    2.      schema主要成员:

    (1)      fieldType:为field定义类型,最主要作用是定义分词器,分词器决定着如何从文档中检索关键字。

    (2)      analyzer:他是fieldType下的子元素,这就是传说中的分词器,他由一组tokenizer和filter组成,如下图所示

    (3)      field:他是创建索引用的字段,如果想要这个字段生成索引需要配置他的indexed属性为true,stored属性为true表示存储该索引。如下图所示每个field都要引用一种fieldType由type属性定义

    这里描述的只是最常用的三个元素,关于更多schema的介绍请参考http://lucene.apache.org/solr/guide/7_4/documents-fields-and-schema-design.html

     

    3.      Schema API

    Schema API其实就是用post请求向solr服务器发送携带json参数的请求,所有操作内容都封装在json中,如果是linux系统直接使用curl工具,如果是windows系统推荐使用Postman

     

    这里以添加一个field为例,下面列出其他API

    add-field: add a new field with parameters youprovide.

    delete-field: delete a field.

    replace-field: replace an existing field withone that is differently configured.

    观看更多API内容请参考http://lucene.apache.org/solr/guide/7_4/schema-api.html

    4.中文分词器:

    solr自带了一些中文分词器,比较好用的是SmartChineseAnalyzer,但是扩展性比较差不能自定义扩展中文词库,所以这里选择使用IKAnalyzer,这是第三方的一个分词器可以很好的扩展中文词库,IKAnalyzer下载后解压会有如下文件

     

    把核心jar文件复制到solr WEB应用的lib文件夹下,如下图

     

    把配置文件和词库等文件复制到WEB应用的classes文件夹下,如果子WEB-INF下没有这个文件夹自己创建即可,如下图:

     

    如果想要扩展词库可以在ext.dic文件中配置自定义的中文词组,例如:诛仙这个词组,这个分词器的算法是算不出来的但是通过我们自定义词库,分词器也可以把诛仙列出关键词。

        上图是ext.dic文件中的内容,注意编辑此文件时字符编码最好是UTF-8无BOM模式,这个可以通过EditPlus等文本编辑工具设置。下面开始在Schema中应用分词器如下图:

     

     

     

    定义了一个text_ik这个字段类型并采用Ik分词器,接下来在field元素定义式指定type=text_ik就可以把这个分词器应用在这个field中。

    接下来我们来验证下ik分词器,如下图:

     

    五、DIH导入索引数据

    1.      DIH简介:

    DIH全称是Data Import Handler 数据导入处理器,顾名思义这是向solr中导入数据的,我们的solr目的就是为了能让我们的应用程序更快的查询出用户想要的数据,而数据存储在应用中的各种地方入xml、pdf、关系数据库中,那么solr首先就要能够获取这些数据并在这些数据中建立索引来达成快速搜索的目的,这里就列举我们最常用的从关系型数据库中向solr导入索引数据。

    2.      在我们自己建立的core的目录下有conf目录,这里面有着几个很重要的配置文件,之前我们用到的managed-schema(老版本是schema.xml)也在其中,另外还有一个solrconfig.xml文件,这是我们DIH配置的第一步,需要在此文件中配置数据导入文件的映射位置如下图:

     

    第二步配置数据导入文件,这个文件可以在solr根目录下的示例文件中copy一份到core/conf目录下,也就是跟solrconfig.xml在一个目录下,因为solrconfig.xml中配置的相对路径就是这里,当然也可以写绝对路径。如下图:

     

    Copy过去之后这个文件名可以自定义,我就改成了MyDataConfig.xml,下面开始配置如下图:

     

    (1)首先配置数据源关系型数据库基本四项,驱动类,url,用户名,密码。

    (2)配置document,可以把它当作与mysql中数据库一个层级的对象。

    (3)配置entity,可以把它当作与数据库中一个表对应,在query中书写查询sql。

    (4)配置field与表中的字段与之对应。

            注意这里容易与schema中的配置混淆,我的理解是schema中配置的是创建索引的配置,而索引的创建需要有数据基础,而现在讲的数据导入文件就是建立索引的数据基础,他是创建索引的元数据。现在配置文件完成后可以用DIH命令执行了。

    3.      DIH 命令

    DIH命令就是用来执行数据导入的,命令种类繁多这里只列出简单常用。DIH命令采用的方式是URL的方式。

    full-import:全部数据导入例如:

     

    接下来验证下数据是否真的导入成功了,如下图

     

    fq:过滤的字段,df:默认查询字段,start,rows:分页配置,sort:排序,更多关于查询语句的介绍请参考http://lucene.apache.org/solr/guide/7_4/searching.html

    六、solrJ(java客户端)

    简介:solrJ是java访问solr的客户端工具包,solr也提供了其他语言访问的客户端,可以到官方文档查看,现在solr的索引和数据导入都已经有,但是作为项目中应用的一个组件,少不了java与solr的沟通。

    1.      导入solrJ依赖

    如果你是用的是依赖管理工具如maven那么很简单直接添加依赖。

    <dependency>

     <groupId>org.apache.solr</groupId>

     <artifactId>solr-solrj</artifactId>

     <version>7.4.0</version>

    </dependency>

    2.从solr中查询索引

     

    3. 向solr添加更改索引

     

    (1)java实体对象与solr索引映射

    (2)向solr添加或更新索引,如果此实体在solr索引库中已有则作为更新操作

    文章写到这里solr的基本使用就都介绍完了感谢大家的观看。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 什么是Solr,它能为我们解决什么问题,怎么用?

    万次阅读 多人点赞 2018-09-07 13:43:24
    其实我们大多数人都使用过Solr,也许你不会相信我说的这句话,但是事实却是如此啊 ! 每当你想买自己喜欢的东东时,你可能会打开某宝或者某东,像这样一搜,就能搜到很多东西,你知道你看到的这些数据都来自哪儿吗?百度一下...

     

    一.  什么是Solr?

    其实我们大多数人都使用过Solr,也许你不会相信我说的这句话,但是事实却是如此啊 ! 每当你想买自己喜欢的东东时,你可能会打开某宝或者某东,像这样一搜,就能搜到很多东西,你知道你看到的这些数据都来自哪儿吗?百度一下你就知道!这些数据来自哪儿吗?等你了解完Solr后你就知道答案啦!

     

    现实生活中我们都知道大多数网站或应用都必须具有某种搜索功能,问题是搜索功能往往是巨大的资源消耗并且它们由于沉重的数据库加载而拖垮你的应用的性能。

    这就是为什么转移负载到一个外部的搜索服务器是一个不错的主意,Apache Solr是一个流行的开源搜索服务器,它通过使用类似REST的HTTP API,这就确保你能从几乎任何编程语言来使用solr

    Solr是一个开源搜索平台,用于构建搜索应用程序。 它建立在Lucene(全文搜索引擎)之上。 Solr是企业级的,快速的和高度可扩展的。 使用Solr构建的应用程序非常复杂,可提供高性能。

    为了在CNET网络的公司网站上添加搜索功能,Yonik Seely于2004年创建了Solr。并在2006年1月,它成为Apache软件基金会下的一个开源项目。并于2016年发布最新版本Solr 6.0,支持并行SQL查询的执行。

    Solr可以和Hadoop一起使用。由于Hadoop处理大量数据,Solr帮助我们从这么大的源中找到所需的信息。不仅限于搜索,Solr也可以用于存储目的。像其他NoSQL数据库一样,它是一种非关系数据存储和处理技术。

    总之,Solr是一个可扩展的,可部署,搜索/存储引擎,优化搜索大量以文本为中心的数据。

    二. 那有人可能会说搜索这玩意儿数据库本身就支持啊,干嘛还要搞个什么solr?其实正如上面solr的介绍中所说的那样.

    2.1 solr本身也可以看成数据库,(no sql类型),但它比数据库搜索速度更快,所以在项目中我们一般把搜搜的部分交给solr,就像我们在京东首页所看到的商品信息,并不是来自数据库,而是来源于sorl的索引库

    2.1 数据库本身不能实现分词效果,而只能使用模糊查询,但是模糊查询非常低效,查询速度比较慢,由于在实际生活中,一般搜索是用的比较多的,这样数据库压力自然就很大,所以我们就让供专业的solr来做搜索功能

    三.如果我们想要使用solr那么首先我们得安装它

    1:安装 Tomcat,解压缩即可。

    2:解压 solr,官网 http://lucene.apache.org/solr/

    3:把 solr 下的dist目录solr-4.10.3.war(我用的是这个版本)部署到 Tomcat\webapps下(去掉版本号)。

    4:解压缩 war 包,可以启动 Tomcat解压,可以用压缩软件解压

    5:把solr下example/lib/ext 目录下的所有的 jar 包,添加到 solr 的工程中(\WEB-INF\lib目录下)。

    6:创建一个 solrhome 。solr 下的/example/solr 目录就是一个 solrhome。复制此目录到某个盘改名为solrhome 

    7:关联 solr 及 solrhome。需要修改 solr 工程的 web.xml 文件。

     

    8:启动 Tomcat,看到下面这个界面说明solr安装成功啦

    http://IP:8080/solr/

    但是由于这个东西是外国人写的,再加上博大精深的中华文化,solr对于中文的分词效果非常糟糕,不能很好的分词,就不能建立一个很好的索引库,也就不能提供好的搜索服务.于是我们中国人基于solr自己写了个分词器,终于能够愉快的使用solr了;

    而当我们使用了中文分词器后效果变成这样

    下面我们就来说说怎样使用这个中午让你分词器吧(当然有多种啦,目前最受欢迎的就是IK Analyzer 啦)

    介绍:

    IK Analyzer 是一个开源的,基亍 java 语言开发的轻量级的中文分词工具包。从 2006年 12 月推出 1.0 版开始, IKAnalyzer 已经推出了 4 个大版本。最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件。从 3.0 版本开始,IK 发展为面向 Java 的公用分词组件,独立亍 Lucene 项目,同时提供了对 Lucene 的默认优化实现。在 2012 版本中,IK 实现了简单的分词歧义排除算法,标志着 IK 分词器从单纯的词典分词向模拟语义分词衍化。

     

    使用步骤:

    1、下载IKAnalyzer,解压后把IKAnalyzer2012FF_u1.jar 添加到 solr 工程的 lib 目录下

    官网:http://code.google.com/p/ik-analyzer/downloads/list,打不开就到网上找一个

    2、创建WEB-INF/classes文件夹  把扩展词典、停用词词典、配置文件放到 solr 工程的 WEB-INF/classes 目录下。

    3、修改 Solrhome 的 schema.xml 文件,配置一个 FieldType,使用 IKAnalyzer

    <fieldType name="text_ik" class="solr.TextField">

         <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>

    </fieldType>

    重启tomcat,如图提示操作,看到下面的效果说明成功

    当然solr对于我们来说最终必须要能够用到项目中去,才能发挥它真正的价值,后面我将会写一遍solr项目实战的东东,敬请期待... 

    展开全文
  • Solr的基本使用

    万次阅读 多人点赞 2018-01-24 13:34:28
    Solr的基本使用 1.schema.xml 1.1.Field和fieldType(重点) schema.xml,在SolrCore的conf目录下,它是Solr数据表配置文件,它定义了加入索引的数据的数据类型的。主要包括FieldTypes、Fields和其他的一些...

    Solr的基本使用

    1.schema.xml


    1.1.Field和fieldType(重点)

    schema.xml,在SolrCore的conf目录下,它是Solr数据表配置文件,它定义了加入索引的数据的数据类型的。主要包括FieldTypes、Fields和其他的一些缺省设置。

    field:进行索引,需要创建document,document中包括 了很多的field(域)。
    field属性:是否索引、是否存储、是否分词 ,是否多值multiValued

    multiValued:该Field如果要存储多个值时设置为true,solr允许一个Field存储多个值,比如存储一个用户的好友id(多个),商品的图片(多个,大图和小图),通过使用solr查询要看出返回给客户端是数组:

    Fieldtype:在solr中对每个Field都有一个Type类型。

    在Solr中进行索引、搜索时需要用哪些field需要提前在schema.xml文件中定义!!!!

    通过界面查看 solrCore中有哪些field被定义:

    这里写图片描述

    比如:

    <field name="name" type="text_general" indexed="true" stored="true"/>

    filed的name:name
    indexed:是否索引,true表示要索引,索引的目的为了搜索
    stored:是否存储,存储的目的是为了从索引文件读取数据

    type:text_general

    这里写图片描述

    1.2.主键(重点)

    Solr在维护索引时要根据主键进行维护,比如创建索引没有指定主键,报如下错误:

    这里写图片描述

    如何指定solr的主键:

    在schema.xml配置<uniqueKey>id</uniqueKey>

    Solr中默认定义唯一主键key为id域,如下:

    <uniqueKey>id</uniqueKey>
    Solr在删除、更新索引时使用id域进行判断,也可以自定义唯一主键。
    注意在创建索引时必须指定唯一约束。

    1.3.copyField复制域

    copyField复制域,可以将多个Field复制到一个Field中,以便进行统一的检索:
    比如,输入关键字要搜索title标题和内容content这两个域时,要用到复制域

    定义目标域:

    这里写图片描述

    必须要使用:multiValued=”true”

    将以下的域复制到目标域中:
    这里写图片描述

    如果在搜索时,搜索text域,solr会分别从以上cat、name、manu、features、includes这域中搜索,类似lucene中组合 域 搜索。

    1.4.dynamicField

    使用 solr时要定义很多field比较麻烦,可以定义一种动态域,动态域没有具体的域名是定义一个规则,比如:name 为*_i。
    当创建索引,指定field名称匹配上规则solr就执行成功,比如:动态域*_i,只要以_i结尾 的就可以索引创建成功。

    2.安装中文分词器


    2.1.IKAnalyzer部署

    将 Ikanalyzer的jar拷贝到Solrcore中
    将IKAnalyzer2012FF_u1.jar拷贝到 solr\contrib\IKAnalyzer\lib下

    在solrconfig.xml中配置加载IKanalyzer的jar,添加配置:

     <lib dir="${solr.install.dir:../..}/contrib/IKAnalyzer/lib" regex=".*\.jar" />

    配置扩展词库文件:

    在Tomcat的webapps/solr/WEB-INF/下创建classes目录
    将IKAnalyzer.cfg.xml、ext_stopword.dic mydict.dic copy到
    Tomcat/webapps/solr/WEB-INF/classes下

    注意:ext_stopword.dic 和mydict.dic必须保存成无BOM的utf-8类型。

    2.2.修改schema.xml文件添加新的fieldType及Field测试

    添加fieldType

    这里写图片描述

    自定义Field:

    这里写图片描述

    3.自定义业务系统Field


    要使用Solr去实现业务系统站内搜索功能,需要在solrCore中schema.xml文件中自定义field。

    3.1.需求

    要使用solr实现电商网站中商品搜索。

    电商中商品信息在mysql数据库中存储了,将mysql数据库中数据在solr中创建索引。

    需要在solr的schema.xml文件定义商品Field。

    3.2.定义步骤

    先确定定义的商品document的field有哪些?
    可以根据mysql数据库中商品表的字段来确定:

    products商品表:
    这里写图片描述

    商品document的field包括:pid、name、catalog、catalog_name、price、description、picture

    先定义Fieldtype:
    solr本身提供的fieldtype类型够用了不用定义新的了。

    再定义Field:

    pid:商品id主键
    使用solr本身提供的:
    <field name=”id” type=”string” indexed=”true” stored=”true” required=”true” multiValued=”false” />

    这里写图片描述

    4.SorlJ创建索引


    4.1.SorlJ介绍

    Solr是一个全文检索的服务,对外提供webservice服务,webservice使用的http协议。
    Solr作为一个服务端,同时也提供很多的不同编程语言的客户端,供程序员开发使用。

    这里写图片描述

    4.2.SorlJ安装

    solrj就是一推api,即jar包。

    业务系统的应用程序(javaEE程序)通过solrJ提供的api调用solr服务。

    下载的solr的zip包中就有solrj的jar:

    这里写图片描述

    要使用solrJ需要哪些jar包?

    jar包明细:
    solr-4.10.3\dist\solrj-lib*
    solr-4.10.3\dist\ solr-solrj-4.10.3.jar
    solr-4.10.3\example\lib\ext*
    junit包

    4.3.Solrj索引维护

    4.3.1.添加及更新索引

    这里写图片描述

    4.3.2.删除索引

    这里写图片描述

    5.数据导入处理器


    5.1.dataimport-Handler介绍

    solr提供dataimport-Handler数据导入处理器,工作流程:

    1、solr通过dataimport-Handler查询关系数据库中的数据
    2、对查询到的数据创建索引

    上边的过程是自动化完成的。

    可以通过此dataimport-Handler,批量将关系数据库中的数据创建索引到solr索引库中。

    5.2.第一步:加载dataimport的jar包

    将solr\dist\ solr-dataimporthandler-4.10.3.jar拷贝至solr\contrib\dataimporthandler

    配置solrconfig.xml加载jar包:

     <lib dir="${solr.install.dir:../..}/contrib/dataimporthandler/lib" regex=".*\.jar" />

    5.3.第二步:加载mysql数据驱动包

    方法同上,将mysql数据库驱动的jar拷贝至solr\contrib\databaseDriver下

    配置solrconfig.xml加载jar包:

    <lib dir="${solr.install.dir:../..}/contrib/databaseDriver/lib" regex=".*\.jar" />

    5.4.第三步:配置dataimport导入数据

    创建data-config.xml文件,存放在SolrCore的conf目录

    这里写图片描述

    5.5.第四步:修改solrconfig.xml,添加requestHandler

    这里写图片描述

    5.6.测试数据导入

    这里写图片描述

    6.solrj进行搜索

    6.1.solr的查询语法

    1.q - 查询关键字,必须的,如果查询所有使用:
    请求的q是字符串

    这里写图片描述

    2.fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,例如::
    请求fq是一个数组(多个值)

    这里写图片描述

    过滤查询价格从1到40的记录。
    也可以在“q”查询条件中使用product_price:[1 TO 40],如下:
    这里写图片描述
    也可以使用“*”表示无限,例如:
    40以上:product_price:[40 TO *]
    40以下:product_price:[* TO 40]

    3.sort - 排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]… 。示例:
    这里写图片描述按价格降序

    4.start - 分页显示使用,开始记录下标,从0开始
    5.rows - 指定返回结果最多有多少条记录,配合start来实现分页。
    实际开发时,知道当前页码和每页显示的个数最后求出开始下标。

    6.fl - 指定返回那些字段内容,用逗号或空格分隔多个。


    显示商品名称和商品价格

    7.df-指定一个搜索Field

    这里写图片描述

    也可以在SolrCore目录 中conf/solrconfig.xml文件中指定默认搜索Field,指定后就可以直接在“q”查询条件中输入关键字。

    这里写图片描述

    8.wt - (writer type)指定输出格式,可以有 xml, json, php, phps, 后面 solr 1.3增加的,要用通知我们,因为默认没有打开.

    9.hl 是否高亮 ,设置高亮Field,设置格式前缀和后缀。

    这里写图片描述

    6.2.solrj搜索方法

     //查询索引
        @Test
        public void testSearchIndex() throws Exception{
            ////创建Solr服务对象,通过此对象向solr服务发起请求
            SolrServer solrServer = new HttpSolrServer(solrUrl);
            //创建查询对象
            SolrQuery query = new SolrQuery();
            //查询关键字,q不能省略
            query.set("q","product_keywords:睡枕");
    
            //指定过滤
            query.set("fq","product_price:[1 TO 40]");
            query.set("fq","product_catalog_name:幽默杂货");
    
            //排序
            //参数:field域,排序类型(asc,desc)
            query.addSort("product_price", SolrQuery.ORDER.desc);
    
            //分页
            //实际开发时,知道当前页码和每页显示的个数最后求出开始下标
            int curPage = 1;
            int rows = 15;
    
            //计算出开始记录下标
            int start = rows * (curPage - 1);
    
            //向query中设置分页参数
            query.setStart(start);
            query.setRows(rows);
    
            //指定显示的field
    //        query.addField("product_name");
    //        query.addField("id");
    
            //指定默认搜索域
            query.set("df","product_keywords");
    
            //开启高亮
            query.setHighlight(true);
            //设置高亮 参数
            query.addHighlightField("product_name");
            //设置高亮前缀和后缀
            query.setHighlightSimplePre("<span style=\"color:red\">");
            query.setHighlightSimplePost("</span>");
    
            //执行查询
            QueryResponse response = solrServer.query(query);
    
            //从响应中得到结果
            SolrDocumentList documents = response.getResults();
    
            //匹配到的总记录数
            long numFound = documents.getNumFound();
            System.out.println("匹配到的总记录数:"+numFound);
    
            //从响应中获得高亮信息
            Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
    
            for (SolrDocument document:documents){
                System.out.println("商品id:"+document.get("id"));
                System.out.println("商品名称:"+document.get("product_name"));
                System.out.println("商品价格:"+document.get("product_price"));
                System.out.println("商品分类名称:"+document.get("product_catalog_name"));
                System.out.println("商品图片:"+document.get("product_picture"));
    
                //获得高亮的信息
                if(highlighting!=null){
                    //根据主键获取高亮信息
                    Map<String, List<String>> map = highlighting.get(document.get("id"));
                    if(map!=null){
                        List<String> list = map.get("product_name");
                        if(list!=null){
                            System.out.println("高亮后:"+list.get(0));
                        }
                    }
                }
            }
    
    
        }
    
    展开全文
  • solr简介和使用

    万次阅读 2017-06-02 16:51:46
    一、搜索功能的流行方案由于搜索引擎功能在门户社区中对提高用户体验有着重在门户社区中涉及大量需要搜索引擎的功能需求,目前在实现搜索引擎的方案上有集中方案可供选择: 1、基于Lucene自己进行封装实现站内搜索...
  • Solr语法解析及SolrJ使用

    千次阅读 2018-03-01 17:37:49
    Solr语法解析及SolrJ使用 标签(空格分隔): Solr 官方指南:http://lucene.apache.org/solr/quickstart.html Solrj 之HttpSolrClient 旧版本的连接服务HttpSolrServer在solr5版本后已经停用,被新的...
  • Solr全攻略

    千次阅读 2019-01-28 16:49:49
    文章目录Solr简介Solr安装使用Solr部署模式 Solr简介 官网:https://lucene.apache.org/solr/ Solr是基于Apache Lucene ™构建的流行,快速,开源的企业搜索平台。 Solr是一个Java Web应用,可以运行在任何...
  • 手把手教你如何玩转Solr(包含项目实战)

    万次阅读 多人点赞 2018-12-11 17:58:20
    备注:学习Solr最好先了解一下Lucene的基本内容,不需要很熟,但是知道个基础即可。 大家可以关注我的微信公众号:Java菜鸟进阶之路 一:Solr简介  Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-...
  • solr 查询 分组及排序

    万次阅读 2018-08-22 11:54:59
    solr中有个索引,对应mysql的用户表,如下: { &amp;amp;amp;quot;chineseName&amp;amp;amp;quot;: &amp;amp;amp;quot;宋玉山&amp;amp;amp;quot;, &amp;amp;amp;quot;englishName&amp...
  • solr5.4.0

    万次阅读 2018-11-20 21:28:20
    有文本,图片,电影,链接等等,这就是一个搜索引擎实现的,当然百度有自己的搜索引擎,我们可以不用自己写一个搜索引擎,有现成的比如sorl,lucene,ElasticSearch等等,这里介绍一些solr。 1.概述1.1 Solr 是什么...
  • 存在问题:为了减轻数据库的访问压力,往往我们将必要的数据存储到solr中,并给部分字段建立索引,此时在查询数据的时候可以通过solr查询,这样就大大的提高了查询的效率。但是以下这个问题困扰很多初学者。包括博主...
  • 在linux下通过zookeeper部署solr集群详细配置教程
  • Solr与Tomcat配置

    万次阅读 2018-05-11 19:01:12
    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的...
  • POM.xml文件如下: &lt;dependency&gt; &lt;groupId&gt;org.springframework.data&...spring-data-solr&lt;/artifactId&gt; &lt;version&gt;2.1.13.RELEASE&l...
  • 前言:由于项目最近在做淘宝客商品信息查询这一块,做搜索引擎,离不开全文搜索服务器,我这里选择了solrsolr的好处可以自行百科,这里主要是讲解技术。这篇文章主要讲解window的安装和使用。若大家感兴趣或者项目...
  • solr导入csv文件

    万次阅读 2017-06-14 14:51:51
    1 概述 大多数的应用程序将数据存储在关系数据库、xml文件中。对这样的数据进行搜索是很常见的应用。所谓的DataImportHandler提供一种可配置 的方式向solr导入数据,可以一次...能够通过solr文档更新solr  提供 通
  • solr

    千次阅读 2016-05-17 07:56:19
    slor lucene学习,slor 安装, solr介绍1、 solr介绍2、 solr安装配置(重点)3、 solr的基本使用(重点)4、 solrj的使用(重点) 1 Solr介绍1.1 什么是solrSolr也是Apache下一个项目,它是使用java开发的...
  • Solr之——Solr4.4主从模式配置

    千次阅读 2015-12-10 17:29:30
    废话不多说,直接进入主题,我们一起来搭建solr主从配置框架。 一、主从模式介绍 Solr(这里指Solr4.4)的主从模式实现是这样一个思路。首先至少有两个solr服务器,一个称为master(主服务),其余的一个或多个solr...
  • Solr之搭建Solr6.0服务并从Mysql上导入数据

    万次阅读 热门讨论 2019-04-12 20:06:14
    目前百度上面关于solr对MYSQL的集成一般都是4.0左右。但是前solr的版本已经到了6.0,很多配置都和一起不一样了。所以我今天就和大家聊聊solr6.0如何进行MYSQL数据库的配置。(配置的前提是已经搭建好solr服务器了,...
1 2 3 4 5 ... 20
收藏数 53,854
精华内容 21,541
关键字:

solr