`

Solr:强大的企业级搜索引擎平台

阅读更多

转自: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

会输出一些信息如下图:

在这里,是启动了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 楼 80后的童年2 2018-01-16  
企业级分布式搜索平台Solr视频教程
网盘地址:https://pan.baidu.com/s/1gg2xcPH 密码: bmu5


快速上手数据挖掘之Solr5搜索引擎高级教程
网盘地址:https://pan.baidu.com/s/1kXiSxvD 密码: 3va7


基于Lucene4.6+Solr4.6+Heritrix1.14+S2SH实战开发从无到有垂直搜索引擎
网盘地址:https://pan.baidu.com/s/1jJDMp3S 密码: v3j2

solrcloud5+zookeeper视频教程
网盘地址:https://pan.baidu.com/s/1qZXmQr6 密码: cb2q

相关推荐

    solr 企业搜索引擎教程

    更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。 通过对 Solr 进行适当的配置, 某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此 外,很多 Lucene 工具(如 Nutch、...

    已编译版本solr-8.11.2.tgz

    Solr是一个独立的企业级搜索应用服务器,他对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务提供一定格式的xml文件,生成索引;也可以通过http get 操作提供查找请求,并得到xml格式的...

    Hbase 二级索引方案

    Solr 是一个独立的企业级搜索应用服务器,是 Apache Lucene 项目的开源企业搜索平台, 其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如 Word、PDF)的处理。Solr 是高度可扩展的...

    基于jbpm与activiti的工作流平台技术架构介绍

    基础组件包括: Spring基础组件库,报表引擎,数据库访问模块,短信模块,后台定时任务调用组件,短信访问组件,搜索引擎组件,JMS消息组件,Activiti工作流组件,Cas统一用户认证组件,Spring安全认证组件。...

    JAVA上百实例源码以及开源项目源代码

    Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 ...

    JAVA上百实例源码以及开源项目

    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...

    java开源包1

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包11

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包2

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包3

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包6

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包5

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包10

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包4

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包8

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包7

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包9

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    java开源包101

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

    Java资源包01

    AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是...

Global site tag (gtag.js) - Google Analytics