数据检索---基于Solr索引

Solr是什么

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

在Solr的官网(http://lucene.apache.org/solr/)上说的Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene

很明显Solr基于Lucene,处在Lucene项目下,基本与Lucene保持同步更新。

Solr是基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。工作方式:查询该集合也是通过http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。

Solr工作原理:

Solr对外提供标准的http接口来实现对数据的索引的增加、删除、修改、查询。在 Solr 中,用户通过向部署在servlet 容器中的 Solr Web 应用程序发送 HTTP 请求来启动索引和搜索。Solr 接受请求,确定要使用的适当SolrRequestHandler,然后处理请求。通过 HTTP 以同样的方式返回响应。默认配置返回Solr 的标准 XML 响应,也可以配置Solr 的备用响应格式。

可以向 Solr 索引 servlet 传递四个不同的索引请求:
add/update 允许向 Solr 添加文档或更新文档。直到提交后才能搜索到这些添加和更新。
commit 告诉 Solr,应该使上次提交以来所做的所有更改都可以搜索到。
optimize 重构 Lucene 的文件以改进搜索性能。索引完成后执行一下优化通常比较好。如果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常地运行。优化是一个耗时较多的过程。
delete 可以通过 id 或查询来指定。按 id 删除将删除具有指定 id 的文档;按查询删除将删除查询返回的所有文档。


继续更新:上面说了很多,其实都是幌子,没有什么实际意义,说实在的原来想的就是在这里占个坑,下面来点干货:

Solr怎么玩

1 下载Solr,我用的是solr-5.3.0,解压(我是在windows系统上跑的,最好是在linux下面跑,因为solr有些脚本没有windows版的)

2. 启动

solr-5.3.0\server\solr下面新建一个目录mycore

把solr-5.3.0\server\solr\configsets\basic_configs下面的conf目录copy到mycore里面,新建一个目录data.

修改conf里面的文件schema.xml ,在field id 后面加两行name,age,把那些动态字段全部删掉,真烦,很多人不需要那么多,solr也挺烦的,搞那么多,别人知道是干什么的,吐槽下,真的让很多刚开始学习的童鞋云里雾里,不知道怎么下手,搞得心烦了就放弃了,这种赶脚有木有过?!

这样里面部分看起来像这样:

    <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
    <field name="name" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
   <field name="age" type="int" indexed="true" stored="true" required="true" multiValued="false" /> 
    <uniqueKey>id</uniqueKey>

    这意思很明显了,id是唯一字段(建议这个要有),还有两个字段name,age 其他的配置项都先不要管了。

   启动一个CMD窗口到solr安装目录/bin

solr start -p 8983

看到 Started Solr server on port 8983.Happy searching.  恭喜你,启动成功了。打开浏览器 http://localhost:8983/solr

3,管理Core

左边看到有个core admin,新建一个core. 名称为mycore


4,索引,查询

新建成功后,可以看到左下角,有个下拉,选择mycore,点击Document,往里面灌些数据


可以多编辑几条数据  {"id":"2","name":"li si","age":22}   {"id":"3","name":"zhang si","age":33}  看看

也可以在命令行到bin目录执行   java -Dc=new_core -jar ../example/exampledocs/post.jar ../test/a.xml (最后这个参数就是要索引的文件或者目录都可以,注意目录结构,我的当前目录是bin)

a.xml像这样:

<add>
  <doc>
    <field name="id">1</field>
    <field name="name">aaa</field>
    <field name="age">11</field>
  </doc>
</add>

在linux下面可以执行bin/post(windows下面没有这个脚本)命令来做。

点击Query,来查询看数据有木有,这个可以有:



现在一切真相大白了,原来前面做这么多就是为了看这个!现在你爽了没有,其实也很简单,但是网上很多版本比较旧,说的不清楚,都是copy的,所谓原理、说明一大堆,都没有我这个简单明了,Right?

这里面的每一步是做什么的,为什么要这么做,我不多说了,网上很多文档用的上,solr里面的配置文档很多注释也说了很多,看看就清楚了。

核心问题:

字段怎么配置,配置意义

怎么修改删除文档

数据库数据怎么进行索引

复杂查询怎么写

中文分词怎么配置

怎么提高索引/搜索效率

还有Solr的 cluster 下面怎么搞,这个必须的,后面 "数据检索---Solr Colud一定搞出来,娃哈哈!





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值