设为首页 收藏本站
查看: 886|回复: 0

[经验分享] Solr:强大的企业级搜索引擎平台

[复制链接]

尚未签到

发表于 2016-12-16 08:29:38 | 显示全部楼层 |阅读模式
  转自:http://www.zihou.me/html/2011/04/17/3470.html
  Solr是Lucene下面的一个用Java写的开源子工程项目,它是一个非常强大的企业级搜索平台,它的主要特征包括强大的全文检索、高亮显示、分面搜索、动态聚类、数据库集成、富文本(比如word、PDF)及地理空间搜索等。Solr高度可扩展,提供分布式搜索及索引复制,它为许多世界上大的网站提供了强大的搜索服务,诸如CNet、Zappos等。
  Solr使用Lucene的搜索核心库来做全文检索,它的接口采用HTTP/XML和JSON APIs传输数据,这使得它更易用并可以支持不同的语言。Solr强大的配置可以允许它被定制成各种没有Java代码的应用,你还可以通过扩展它的插件来获得更多的自定义功能。
  目前Solr最新版本是3.1.0,这与它的上一个版本1.4.1在版本号方面有很大跳跃,这主要是为了跟Lucene的版本号相对应的,因为Lucene的版本目前也是3.1.0.
  1、官方网址
  http://lucene.apache.org/solr/
  2、快速了解
  在之前,必须确保你的JDK版本是1.6 版本或更高。
  2.1.运行
  下载二进制包后,解压出来,在example目录下有个start.jar包,在DOS界面中进入到这个目录,运行命令:
  user:~/solr/example$ java -jar start.jar
  会输出一些信息如下图:
DSC0000.png

  在这里,是启动了Jetty这一Solr自带的Web服务器,所以你不需要再启动其他的Web服务器比如Tomcat。
  启动后,你可以通过http://localhost:8983/solr/admin/来打开Solr的例子搜索界面,在这个界面中,你就可以进行搜索了,当然,你在搜索后可能会奇怪,为什么搜索不到任何东西呢?很简单,那是因为现在还没有任何的索引。
  2.2.添加索引数据
  我们可以通过XML格式的形式向Solr提供数据,Solr会给这些数据创建索引,在目录example\exampledocs中有些测试数据,这时我们另开一个Dos窗口,进入到example\exampledocs目录,并运行如下命令:

java -jar post.jar solr.xml monitor.xml
  这样我们将solr.xml和monitor.xml中的数据就提交给了solr。
  当然你也可以提交这个目录下所有的xml数据,只须运行如下命令:
  java -jar post.jar *.xml
  2.3.搜索数据
  现在你可以搜索数据了,通过如下的链接:
  http://localhost:8983/solr/select/?q=solr&start=0&rows=10&indent=on
  或者直接在http://localhost:8983/solr/admin/的界面中输入搜索词,然后点搜索按钮搜索即可,在这里我建议你使用Firefox浏览器来看搜索结果,因为Firefox浏览器可以直接在页面中显示结果的XML样式,而Google浏览器则不是。
  在这里提到了三种不同的搜索:
  一个是只搜索某一词,比如
  http://localhost:8983/solr/select/?q= video
  一个是只搜索指定属性内容,比如:
  http://localhost:8983/solr/select/?q=name:video
  另一个是我们熟知的多个词以空格隔开进行搜索:
  http://localhost:8983/solr/select/?q=%2Bvideo+%2Bprice%3A[*+TO+400]
  有多种方式将数据导入到Solr中如
  使用Data Import Handler (DIH)将数据库中的数据导入
  从CSV文件中导入
  通过JSON文件导入
  索引富文本文件比如WORD、PDF等
  通过SolrJ 或其他 Solr客户端创建一些文档传递给Solr.
  2.4.更新数据
  你可能注意到solr.xml里的数据即使两次提交到服务中,但仍然没有一条重复的结果,比如当你搜索solr的时候,这是因为在这个例子中,schema.xml定义了一个唯一标识的ID,所以只要是相同的ID,那么新的文档将替换掉已有的相同ID的文档。
  2.5.删除数据
  你可以通过提交一个删除命令到服务中删除数据,比如一个ID,或者一个查询(在此情况下得注意,因为符合查询的可能不止一条记录,也就是你将删除多条数据)。在这里,我们可以通过执行如下命令:

java -Ddata=args -Dcommit=no -jar post.jar "<delete><id>SP2514N</id></delete>"
  来进行删除id为SP2514N的记录。
  但你此时如果查询id为SP2514N的记录还是会查询到该条记录,原因是虽然是提交了删除,但这个操作是不可见的,除非一个新的搜索打开,所以要想使得上面的删除生效,则可以执行如下命令:

java -jar post.jar
  此时,你可以发现此条记录已经不能被搜索到了。
  但commit是一个非常昂贵的操作,最好的方式是你批处理一批更新操作,最后才执行提交命令。还有一个优化的命令optimize可以起到与commit相同的效果,optimize的作用就是将多个索引段合并成一个段。
  2.6.返回指定字段结果
  如果你想指定返回某些字段的结果,可以采用如下的形式:
  http://localhost:8983/solr/select/?indent=on&q=video&fl=name,id
  也就是fl=name,id表示只返回name和id的结果
  2.7.对结果排序
  如果想结果按照某一规则排序,可以采用如下形式:
  http://localhost:8983/solr/select/?indent=on&q=video&sort=price+desc
  表示结果按照price desc结果排序
  或者用某一方法来对结果排序:
  http://localhost:8983/solr/select/?indent=on&q=*:*&sort=div%28popularity,add%28price,1%29%29+desc
  2.8.结果高亮显示
  有时我们希望在显示的结果中查询词能高亮显示出来,就如同Google所做的那样,同样Solr也可以做到,如:
  http://localhost:8983/solr/select/?wt=json&indent=on&q=video+card&fl=name,id&hl=true&hl.fl=name,features
  表示要高亮显示的字段结果为name,features,高亮的字符为video.
  2.9.分面搜索
  分面是指事物的多维度属性,比如一首歌曲包括演唱者、作曲者、作词者等。
  在Solr的说明中是指当一个查询结果若干文档出来后,在此基础上可以根据属性或分类来显示符合属性或分类的又有多少条。这种搜索往往可以给搜索者更好的搜索自由度,搜索者可以根据返回的结果分类来深挖或更好得到自己的搜索结果,如下面这个例子就是搜索所有的文档并根据分类字段cat来显示符合的条数
  http://localhost:8983/solr/select/?wt=json&indent=on&q=*:*&fl=name&facet=true&facet.field=cat
  2.10.搜索界面
  Solr也提供了一个搜索图形界面,地址如:
  http://localhost:8983/solr/browse
  Solr的文档地址:
  http://www.zihou.me/docs/solr/api/solrj/index.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-314909-1-1.html 上篇帖子: solr总结 第七部分:solrj 下篇帖子: Securing Solr on Tomcat access using a user account
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表