转自: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
分享到:
相关推荐
### 高效的企业级搜索引擎Solr #### 一、Solr概述 Solr是一款高性能、可伸缩的企业级搜索引擎,广泛应用于需要复杂全文检索功能的系统中。它基于Java开发,能够提供高度灵活的配置机制,并且具备强大的索引与查询...
- **Solr**:Apache Solr 是一款高度可扩展且高性能的企业级搜索平台,由Apache软件基金会维护。它是一个开源搜索服务器,使用Java语言编写,并且主要基于HTTP协议和Apache Lucene实现。 - **特性**: - **高级...
标题中的“利用Solr搭建你的搜索引擎”...通过阅读这份文档,你将能更好地理解和应用Solr,构建自己的企业级搜索引擎。记得实践是掌握技术的关键,尝试自己动手搭建并解决遇到的问题,这样能更好地理解Solr的工作原理。
- **Solr**是一种基于**Lucene**的企业级搜索引擎,它以其强大的搜索能力、灵活的部署方式以及丰富的功能集,在众多搜索引擎中脱颖而出。Solr不仅仅是一个独立的搜索应用,更是一个可以嵌入到其他应用程序中的模块化...
作为一款开箱即用的搜索服务器,Solr旨在简化复杂的企业级搜索应用的搭建和维护。 一、Solr核心概念与架构 1. **Core**:Solr的核心工作单元称为Core,每个Core包含独立的配置和数据集。Core可以看作是一个独立的...
总之,Solr作为一款强大的全文搜索引擎,为企业级搜索应用提供了灵活且高效的解决方案。无论是从安装配置,还是到数据导入、查询优化,都需要深入理解Solr的工作原理和配置细节。通过学习上述文件中的实例,你可以...
Solr,全称为Apache Solr,是企业级的开源全文搜索引擎,它提供了高效、可扩展的搜索和分析功能。作为一款强大的搜索应用服务器,Solr能够处理大量的文档数据,并且支持复杂的查询语句和多种排序策略,使得用户可以...
Apache Solr是一款强大的开源企业级全文搜索引擎,它基于Java且构建于Apache Lucene之上。Solr提供了高效、可扩展的搜索和导航功能,广泛应用于各种规模的企业环境中,用于处理大量数据的快速检索。本文将深入探讨...
Solr,全称为Apache Solr,是Apache软件基金会的一个开源项目,主要提供高速、可扩展的全文检索、命中高亮、拼写检查、查询分析等功能,广泛应用于企业级搜索应用。它基于Java语言开发,使用Lucene库作为其核心搜索...
1. **基于Lucene自封装**:虽然Lucene是强大的文本搜索引擎库,但直接使用它开发企业级搜索引擎需要大量的工作量,且扩展性有限,因此不推荐。 2. **调用Google、Baidu API**:依赖第三方搜索引擎API会限制系统的...
Solr是基于Lucene构建的企业级搜索平台,它扩展了Lucene的功能,增加了许多高级特性,如多核心处理、分布式搜索、缓存、实时索引、丰富的文档处理(XML、JSON等)以及Web界面。Solr使得构建和维护大规模的搜索应用变...
总之,Apache Solr 是一个功能强大的企业级搜索平台,通过理解和掌握其核心特性,开发者可以构建出满足各种业务需求的高效搜索系统。无论是数据索引、查询处理,还是集群管理,Solr 都提供了丰富的工具和接口,使得...
Elasticsearch更侧重于可扩展性和易用性,而Solr则在企业级搜索功能上更加强大。无论选择哪一款搜索引擎,了解它们的核心特性和社区资源都是十分重要的,这将有助于我们更好地利用这些工具解决实际问题。
#### SOLR:企业级搜索引擎的优选 在探讨开源企业搜索引擎SOLR的应用之前,我们先了解SOLR的基本概念及其在企业搜索领域的独特优势。 **SOLR**,全称**Search Platform** **O** **pen** **L** **ibrary** **R** **...
综上所述,Apache Solr是一个功能强大的企业级搜索引擎,以其易用性和强大的搜索功能受到许多开发者的青睐。通过本教程,用户可以系统地学习如何使用Solr搭建企业搜索引擎,并通过一系列实例和方法对Solr搜索引擎...
总的来说,Solr 7.3.1是一个强大且灵活的搜索解决方案,结合Tomcat的易用性和稳定性,为开发者提供了强大的工具来构建和扩展企业级的搜索应用。无论是小型项目还是大型企业,都可以从Solr中受益。在实际操作中,一定...