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>
  1. <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类型,参数需要用引号( "" )括起来



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值