solr的简单使用说明

0.solr简介

Apache Solr 是一个开源、高性能、跨平台、基于Lucene的全文搜索引擎,目标文档可以通过Http方式以xml、json、csv等不同数据格式上传并加载一个搜索集合中(collection),这个过程中solr会对上传的数据(文档)进行分词和建立索引操作,然后通过http接口查询结果,其中结果可以以xml、json、python等多种方式返回。Solr 中存储的资源是以 Document 为对象进行存储的。每个文档由一系列的 Field 构成,每个 Field 表示资源的一个属性。Solr 中的每个
Document 需要有能唯一标识其自身的属性,默认情况下这个属性的名字是 id,在 Schema 配置文件(schema.xml)中使用:<uniqueKey>id</uniqueKey>进行描述。solr有两个核心文件,solrconfig.xml和schema.xml。solrconfig.xml是solr的基础文件,里面配置了各种web请求处理器、请求响应处理器、日志、缓存等;schema.xml配置映射了各种数据类型的索引方案,分词器的配置、索引文档中包含的字段也在此配置。

工作中主要用来分词和搜索,简单的工作原理是:利用分词器对数据源进行分词处理,然后根据分词结果建立索引库;查询的时候,利用分词器对查询语句进行分词,根据查询语句分词的结果在索引库中进行匹配,最后返回结果。

1.安装solr

solr的安装比较简单,本例中使用solr-4.10.3版本,直接将下载好的安装包solr-4.10.3.zip解压至指定目录就好了。

2.启动solr

进入$SOLR_HOME/example目录下,执行 java -jar start.jar就可以了,默认开启的端口为8983

3.上传测试数据至solr:

进入到$SOLR_HOME/example/exampledocs目录,可以通过命令java -jar post.jar solr.xml
monitor.xml进行文件上传

上传数据至solr时,solr会自动建立索引。以上命令默认会将数据上传至collection1中。

相当于:

java -Durl=http://localhost:8983/solr/collection1/update -jar SOLR_HOME/example/exampledocs/post.jar  solr.xml monitor.xml

如果要指定上传的数据进入到哪个collection,可以通过上面命令操作

4.配置solr

4.1 增加collection

solr默认有一个collection1,如果需要新增collection2,可以将$SOLR_HOME/example/solr中的collection1复制到当前目录,并重命名为collection2,

然后进入到collection2目录中修改配置文件core.properties文件,将“name=collection1”改为“name=collection2”,然后重启solr就可以了

4.2 增加字段

我们在向solr上传数据时,要按照solr规定的数据格式来组织好数据,数据类型可以为xml、json、csv等(solr中对文件的后缀名不关心,可以没有后缀名),但每种数据类型都有统一的格式规范,也可以说是字段规范,数据格式规范是在$SOLR_HOME/example/solr/collection1/conf/schema.xml文件中进行配置,其中,在collection1中已经有了默认提供的诸如

id(主键,不可重命名)、name、price等字段。

比如,xml类型的文档的数据格式参如下:


<add>
    <doc> <!-- id为主键--> <field name="id">3007WFP</field> <field name="name">Dell Widescreen UltraSharp 3007WFP</field> <field name="manu">Dell, Inc.</field> <!-- Join --> <field name="manu_id_s">dell</field> <field name="cat">electronics and computer1</field> <field name="features">30" TFT active matrix LCD, 2560 x 1600, .25mm dot pitch, 700:1 contrast</field> <field name="includes">USB cable</field> <field name="weight">401.6</field> <field name="price">2199</field> <field name="popularity">6</field> <field name="inStock">true</field> <!-- Buffalo store --> <field name="store">43.17614,-90.57341</field> </doc>
     <doc>******</doc> </add>

如果需要新增字段的话,只要在配置文件中新增一条配置就行了,比如,新增"tag"字段:

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

然后重启solr就可以了,这时就可以上传具有如下数据结构的文件了。


<add>

<doc><field name=‘id‘>1001</field><field name=‘tag‘>腾讯:1	社交/沟通,通信,即时通信:1	资讯:1</field></doc>

<doc><field name=‘id‘> 1002 </field><field name=‘tag‘>搜狗:1	工具/软件,应用,导航:1</field></doc>

<doc><field name=‘id‘> 1003 </field><field name=‘tag‘>社交/沟通,通信,即时通信:1</field></doc>

<doc><field name=‘id‘> 1004 </field><field name=‘tag‘>腾讯:1	资讯:1</field></doc>

<doc><field name=‘id‘> 1005 </field><field name=‘tag‘>腾讯:1	资讯:1</field></doc>

</add>

在solr中,提供了许多动态字段类型,这样就可以无需修改schema.xml配置增加字段就可以自定义数据类型了。

比如,我们可以用"age_i"自定义int型字段age_i,用"contry_s"自定义String类型字段contry_s,其中"*_i"表示Int型,

"*_s"表示String型,其他的自定义数据类型参考如下(在schema.xml中查看):

5.solr查询

5.1 界面查询

可以通过http://localhost:8983/solr/#/collection1 进入collection的界面

进入之后,可以再左侧的选择框中切换collection。点击“query”就可以进去查询界面了,或者直接通过地址“http://localhost:8983/solr/#/collection1/query进入

上图中,蓝色框用来输入查询条件,*:*表示检索所有的数据,冒号":"左表是关键字,右边是关键字的值,如果为*表示所有。

比如“id:1001”表示查询id值为1001的数据,“name:jack”表示查询name值为jack的数据 ,"name:*"表示查询所有有name字段的数据;

红色方框中用来选择查询结果返回的数据类型,可以选择xml、json、csv、python等类型。比如:

其中,查询条件是查询tag字段为"腾讯视频"的数据,在responseHeader中表示传入的相关参数说明,q表示查询的字段,wt表示返回的数据类型

在response中表示具体的查询结果,其中nameFound表示查询到的记录数量,start表示显示第几页,默认0表示显示第一页(其实,还有rows字段,默认为每页显示10条记录)

5.2 通过接口查询:

http://localhost:8983/solr/collection1/select?q=id:1001&wt=json&start=2&rows=100&indent=true

其中,检索的collection为collection1,查询条件为id等于1001,返回数据类型为json,显示第三页,每页显示100条数据

http://localhost:8983/solr/collection1/select?q=tag:"腾讯视频"&wt=json&indent=true

表示查询tag值为"腾讯视频"的记录(默认显示第一页,每页10条记录)

注:如果查询的关键字字段为string类型,参数需要用引号("")括起来

时间: 2024-10-08 10:21:52

solr的简单使用说明的相关文章

Source Insight 项目简单使用说明

SI(Source Insight) 是我一直写代码的好伙伴, 相信这强大的软件也是广大程序员编写软件的利器. 正所谓" 工欲善其事, 必先利其器", 我们要学会利用这款软件. 先介绍一下它几个强大的功能: 自动补全, 快速跳转, 关系图. 项目创建 1.  菜单栏"Project"-> "New Project" (或直接Alt+Shift+N). 2.  输入项目名称和SI项目数据存放地址.(存放位置看个人, 我习惯在项目代码顶层建立S

Spring依赖注入 --- 简单使用说明

Spring依赖注入 --- 简单使用说明 本文将对spring依赖注入的使用做简单的说明,enjoy your time! 1.使用Spring提供的依赖注入 对spring依赖注入的实现方法感兴趣的同学可以参考我的日志:http://www.cnblogs.com/kodoyang/p/Frame_Imitate_Spring.html 我们会用spring提供的ClassPathXmlApplicationContext实现来代替这篇日志中相应的实现 为导入的jar文件配置api 对应的L

slider-pro的简单使用说明

sliderPro是一款基于jQuery的拓展,实现了上下图片轮播,右侧带有小略缩图,体积也非常小.与bootstrap的Unslider实现的效果是一样的. 用于首页部分还是挺不错的. 使用也是很简单的.css部分我不贴出来,就直接看一下js的初始化使用. $( '#slider-pro' ).sliderPro({ width: 670, height: 500, orientation: 'vertical', loop: false, arrows: true, buttons: fal

Fabric简单使用说明

背景: 关于Fabric的介绍,可以看官网说明.简单来说主要功能就是一个基于Python的服务器批量管理库/工具,Fabric 使用 ssh(通过 paramiko 库)在多个服务器上批量执行任务.上传.下载.在使用Fabric之前,都用Python的paramiko模块来实现需求,相比之后发现Fabric比paramiko模块强大很多.具体的使用方法和说明可以看官方文档介绍.下面写类一个用paramiko封装的远程操作类的模板: #!/usr/bin/python # -*- encoding

Solr(五)Solr实现简单的类似百度搜索高亮功能-2代码

Solr高亮 一 在配置文件中,配置支持Ik分词器的Field 修改文件: cd /usr/local/tomcat/apache-tomcat-8.5.13/solr_home/Test/conf/vi managed-schema 红色部分是支持Ik分词器高亮显示的Field 二 配置完成之后,重启Tomcat,编写代码进行测试,对于环境搭建本文不做过多赘述. 1 与Solr服务器连接获取数据的类SolrRepository package com.sgcc.ge.solr; import

kickstart简单使用说明

一.什么是kickstart 二.kickstart文件组成 三.安装方法 四.图形化程序编辑kickstart配置(kickstart文件包含截图中所注明的相关配置) 一.什么是kickstart kickstart是一个定义了Linux安装过程的配置文件,比如要在系统中使用的时区.如何对驱动器进行分区.或者应该安装哪些软件包.有了这个文件可以解放双手,让Linux安装过程按照我们预先定义的要求进行自动化安装,同时部署大量主机时十分有用.一般centos系统安装后,会在root目录下生成一个名

Highcharts图表插件的简单使用说明

Highcharts图表控件是目前使用最为广泛的图表控件.本文将从零开始逐步为你介绍Highcharts图表控件.通过本文,你将学会如何配置Highcharts以及动态生成Highchart图表. Highcharts是一个非常流行,界面美观的纯Javascript图表库.它主要包括两个部分:Highcharts和Highstock.  Highcharts可以为您的网站或Web应用程序提供直观,互动式的图表.目前支持线,样条,面积,areaspline,柱形图,条形图,饼图和散点图类型.  H

tiff标签简单使用说明

一.目的 项目中使用了Tiff文件,之前使用的是Full-Color格式写的,即直接向文件中写入像素的R.G.B值,这种方式比较简单,但数据量较大,于是又改成使用Palette-Color格式来写,使用这种格式可以只将像素的强度写入文件就好了,然后再写入一个颜色表,图像显示时就可以根据像素强度和颜色表进行显示,数据量可以减小到原来的1/3,比较合适.在本文档中描述一下Full-Color格式和Palette-Color格式所用到的标签及他们的差别. 二.Tiff支持的图像类型 tiff文件共支持

solr的multivalued使用说明

solr的schema.xml配置文件在配置Filed的时候,有个属性: MutiValued:true if this field may containmutiple values per documents,这个说明有点模糊,下面结合实际应用,列举两个不同的例子. 例子一:一个field有多个值,值来自同一filed [html] view plaincopy <fields> <!-- general --> <field name="id"