当前位置:文档之家› solr更新,删除单个索引

solr更新,删除单个索引

solr更新,删除单个索引
solr更新,删除单个索引

Apache Solr 教程

本文介绍的内容是根据 Apache Solr 版本 1.3.0.2009.02.07.10.59.58 编写的,如果你在使用一个不同版本的Solr,请参看伴随发布版中的文档。

● 概述

● 准备

● 开始

● 索引数据

● 更新数据

○ 删除数据

● 查询数据

○ 排序

● 文本分析

○ 分析调试

● 总结

●概述

这个文档使用一个例子来介绍运行Solr的基本知识。

●准备

为了进行这个教程,你需要...

1. Java 1.5或者更高版本。你可以从Sun、IBM、BEA获得它。在命令行中运行 java -version 将显示版本号,确保版本号大于1.5 。

2. 下载一个 Apache Solr 发行版。

3. 一个浏览器用来访问管理页面,IE的标签页看起来不是很好,推荐使用 FireFox 或者 Mozilla 。

●开始

请运行浏览器显示这个教程和在此机器上的Solr服务器,教程会正确地指向你的Solr服务器。

unzip你下载下来的Solr版本,并且改变你的工作目录到"example"目录。(注意,基本的目录结构可能会因你下载的版本不同而有一定的变化)。

chrish@asimov:~solr$ ls

solr-nightly.zip

chrish@asimov:~solr$ unzip -q solr-nightly.zip

chrish@asimov:~solr$ cd solr-nightly/example/

Solr可以运行在你选择的 Java Servlet 容器上,为了简化这个教程,例子索引包含了一个Jetty的最小化安装。为了编译JSP,这个版本的Jetty需要你从JDK中运行java,而不是一个JRE中运行Java。

为了运行带有Solr应用程序的Jetty和例子配置,仅需运行 start.jar ....

chrish@asimov:~/solr/example$ java -jar start.jar

1 [main] INFO org.mortbay.log - Logging to org.slf4j.impl.SimpleLogger@1f436f5 via

org.mortbay.log.Slf4jLog

334 [main] INFO org.mortbay.log - Extract jar:file:/home/chrish/solr/example/webapps/solr.war!/ to /tmp/Jetty__solr/webapp

Feb 24, 2006 5:54:52 PM org.apache.solr.servlet.SolrServlet init

INFO: user.dir=/home/chrish/solr/example

Feb 24, 2006 5:54:52 PM org.apache.solr.core.SolrConfig

INFO: Loaded Config solrconfig.xml

...

1656 [main] INFO org.mortbay.log - Started SelectChannelConnector @ 0.0.0.0:8983

这个将会在8983端口启动Jetty应用服务器,在终端上会显示服务器输出的日志信息。

通过在浏览器中输入 http://localhost:8983/solr/admin/ 能看到Solr正在运行,这是Solr管理员的入口。

●索引数据

你的Solr服务器运行起来了,但是它没有包含任何数据。你可以通过POST包含指令(添加、更新、删除文档,提交未决的添加、删除和优化索引命令)的XML文档来改变一个Solr索引。

exampledocs目录包含了Solr类型指令的例子,也可以在命令行使用一个java工具POST数据(这个脚本的名称为post.sh,但是这个教程里我们将使用跨平台的Java客户端)。

让我们继续这个学习,打开一个终端窗口,进入exampledocs目录,运行"java -jar post.jar"命令并提供XML参数文件,指示Solr服务器的URL:

chrish@asimov:~/solr/example/exampledocs$ java -jar post.jar solr.xml monitor.xml SimplePostTool: version 1.2

SimplePostTool: WARNING: Make sure your XML documents are encoded in UTF-8, other encodings are not currently supported

SimplePostTool: POSTing files to http://localhost:8983/solr/update..

SimplePostTool: POSTing file solr.xml

SimplePostTool: POSTing file monitor.xml

SimplePostTool: COMMITting Solr index changes..

你现在已经在Solr中有了两个已经索引的文档,并已经提交了这些改变。你现在可以在Admin管理页面上的"Make a Query"上搜索"solr" 就能返回结果。点击 "Search" 按钮,然后浏览下面的URL...

http://localhost:8983/solr/select/?stylesheet=&q=solr&version=2.1&start=0&rows=10&indent=on

你可以使用下面的命令索引所有的例子数据(假设你的shell支持 *.xml形式的匹配模式):

chrish@asimov:~/solr/example/exampledocs$ java -jar post.jar *.xml

SimplePostTool: version 1.2

SimplePostTool: WARNING: Make sure your XML documents are encoded in UTF-8, other encodings are not currently supported

SimplePostTool: POSTing files to http://localhost:8983/solr/update..

SimplePostTool: POSTing file hd.xml

SimplePostTool: POSTing file ipod_other.xml

SimplePostTool: POSTing file ipod_video.xml

SimplePostTool: POSTing file mem.xml

SimplePostTool: POSTing file monitor.xml

SimplePostTool: POSTing file monitor2.xml

SimplePostTool: POSTing file mp500.xml

SimplePostTool: POSTing file sd500.xml

SimplePostTool: POSTing file solr.xml

SimplePostTool: POSTing file spellchecker.xml

SimplePostTool: POSTing file utf8-example.xml

SimplePostTool: POSTing file vidcard.xml

SimplePostTool: COMMITting Solr index changes..

...现在可以你可以使用默认的 Lucene QueryParser语法查询所有排序的内容...

● video

● name:video

● +video +price:[* TO 400]

●更新数据

你可能已经注意到,即使solr.xml已经被POST到服务器两次,但你搜索"solr"时仍然只得到一个结果。这是因为schema.xml例子文件指定了一个"uniqueKey"字段作为"id"。无论何时你向Solr发送指令添加一个文档,如果已经存在一个uniqueKey相同的文档,它会自动地为你替换。你通过查看在统计页面的"CORE"部分的numDocs 和 maxDoc值来看刚才发生的事情...

http://localhost:8983/solr/admin/stats.jsp

numDoc 应该为16 (因为我们的11个XML例子文件包含了不止一个),maxDoc可能比较大,因为其包含了在逻辑上已经删除了但是还没有从索引中删除的文档。你可以多次提交这些例子文件,但是numDocs 将不会增加,因为新的文档会替换旧的文档。

编辑已经存在的XML文件修改一些数据,重新运行 java -jar post.jar 命令,你将会在后续的搜索中看到你做的改变。

○删除数据

你可以提交一个删除命令到更新的URL来删除数据,在标识符字段指定值,或者进行匹配多个文档的查询(这个要小心!)。因为这些命令都非常小,在这里我们再命令上进行这些操作,而不是指定一个XML文件。

执行下面的命令来删除一个文档

java -Ddata=args -Dcommit=no -jar post.jar "SP2514N"

现在查看统计页面UPDATE HANDLERS 部分,deletesPending 应该为1。

如果你现在搜索id:SP2514N你仍能找到它,因为索引的改变是不可见的直到其数据更新到磁盘。现在向Solr提交一个命令:

java -jar post.jar

现在重新执行前面的搜索,将不会有匹配文档被发现。也可以重新访问统计页面,观察UPDATE_HANDLERS 和CORE部分的改变。

这里是一个使用delete-by-query来删除在名字中有DDR的内容:

java -Ddata=args -jar post.jar "name:DDR"

提交是一个非常费时的操作,最好对一个索引一次提交多个改变,在最后提交再提交命令。也有一个优化命令,除了其完成提交命令相同的事情外,它会合并所有的索引段到一个单个的段中,这让搜索速度会更快,已经删除的文档也会从索引中删除。

为了继续这个教程,我们需要把例子文档重新提交一边,使用下面的命令:

java -jar post.jar *.xml

●查询数据

查询可以通过HTTP的GET方式,URL的查询字符串中要包含q参数。你也可以传递一些可选参数来控制请求处理器返回什么信息。例如,你可以使用"fl"参数来控制返回什么存储字段,还有如果关联值(relevancy score)被返回时...

● q=video&fl=name,id (仅返回 name 和 id 字段)

● q=video&fl=name,id,score (同时返回关联值)

● q=video&fl=*,score (返回所有字段,同时还有关联值)

● q=video&sort=price desc&fl=name,id (排序: 按 price 降序)

Solr提供了在管理页面进行查询的接口,这个允许设置不同的查询参数,这在调试查询时是很有用的。○排序

Solr提供了一个简单的方法来排序一个或者多个索引段。使用"sort"参数来指定 "field direction" 参数对...

● q=video&sort=price desc

● q=video&sort=price asc

● q=video&sort=in Stock asc, price desc

"score"当指定一个排序时"score"也可以作为一个字段名...

● q=video&sort=score desc

● q=video&sort=inStock asc, score desc

如果没有制定排序,默认是关联值降序,这个和Lucene搜索API是一样的。

●文本分析

文本字段一般通过把字段分割成单词来索引,或者进行不同的转换,例如转换成小写、移出重复值或者填充来增加关联性。通常为了匹配索引使用同样的转换来进行查询。

例子查询阐释了改进关联性的转换:

● 一个搜索power-shot匹配PowerShot, adata 匹配 A-DATA ,因为使用了 WordDelimiterFilter 和LowerCaseFilter.

● 一个搜索 name:printers 匹配 Printer, 和 features:recharging 匹配 Rechargeable,因为使用了EnglishPorterFilter.

●一个搜索 "1 gigabyte" 匹配GB, 和 pixima匹配Pixma因为使用了SynonymFilter.

使用了模式中定义的索引字段和分析类型。当前服务器使用的模式可以使用管理页面的[SCHEMA]连接来访问。

分析组件Analyzers、Tokenizers、TokenFilters的完整描述请访问

https://www.doczj.com/doc/fd3006279.html,/solr/AnalyzersTokenizersTokenFilters。

○分析调试

有一个分析调试页面,在这里你能看到文本如何被分割成单词,同时显示了经过过滤器链中每一个过滤器后的结果。这里显示了 "Canon PowerShot SD500"在名称字段如何作为一个值进行索引。表格的每一行显示了经过名称字段分析器TokenFilter之后的结果。在相同位置生成的Tokens显示在同一列,在这里是shot 和powershot。

选择verbose输出能看到更多信息,例如在链中美一个分析组件的名称、分割位置、在原来文本中的起始和终止位置。

这里是一个 stemming和stop-words工作的例子。

●结论

祝贺你!你已经运行了一个小的Solr实例,已经添加了一些文档和改变了索引。你已经学习了关于查询、文本分析和Solr管理接口的知识。你现在可以在自己的项目中使用Solr了!可采取下面的步骤:

● 订阅Solr邮件列表!

● 拷贝一份Solr例子作为你项目的模版。

● 定制schema 和其它在solr/conf/ 的配置来符合你的需求。

solr技术方案

Solr技术方案 一用户需求 以前的互动平台只能对固定表的固定字段做like这样的数据库层面的索引,性能低下,用户体验很差,很难满足业务提出的简化搜索的需求。 需求原型: 业界通用的做全站搜索的基本上两种: 1 选择googleAPI,百度API做。同第三方搜索引擎绑定太死,无法满足后期业务扩展需要,而且全站的SEO做的也不是很好,对于动态的很多ajax请求需要做快照,所以暂时不采用。 2 选择现有成熟的框架。

这里我们选择使用solr。 Solr是一个基于Lucene的Java搜索引擎服务器。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON 格式)。它易于安装和配置,而且附带了一个基于HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。Solr 包装并扩展了Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与Lucene 搜索引擎库完全兼容。通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他Lucene 应用程序中的索引。此外,很多Lucene 工具(如Nutch、Luke)也可以使用Solr 创建的索引。 这里我们主要需要以下几种功能: 1 可用性及成熟性。 2 中文分词。 3 词库与同义词的管理(比如我们使用最高的:股票代码)。 4 高亮显示。 5 方便的导入数据。 6 Facet的轻松配置 7 扩展性。 二Solr的体系结构 体系结构 Solr体系,功能模块介绍及配置。

以上是solr的架构图。具体应用时需要理解一下模块的作用及配置。 RequestHandler:接受请求,分发请求。另外也包含导入数据,如importhandler。UpdateHandlers –处理索引请求。 Search Components:作为handlder的成员变量。处理请求。 Facet:分类搜索 Tika:apache下处理文件的一个项目。 Filter,spelling :处理字符串 Http query/update Database/html importhandler 默认基本可以满足要求。如果不够则扩展相应的handler和component。

SolrCloud使用教程、原理介绍 我心动了

SolrCloud使用教程、原理介绍 发布于2013 年 8 月 24 日,属于搜索分类,7,446 浏览数 SolrCloud 是基于 Solr 和 Zookeeper 的分布式搜索方案,是正在开发中的 Solr4.0 的核心组件之一,它的主要思想是使用 Zookeeper 作为集群的配置信息中心。 它有几个特色功能:①集中式的配置信息②自动容错③近实时搜索④查询时自动负载均衡。

下面看看 wiki 的文档: 1、SolrCloud SolrCloud 是指 Solr 中一套新的潜在的分发能力。这种能力能够通过参数让你建立起一个高可用、 容错的 Solr 服务集群。当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud(solr 云)。 看看下面“启动”部分内容,快速的学会怎样启动一个集群。后面有 3 个快速简单的例子, 它们展现怎样启动一个逐步越来越复杂的集群。检出例子之后,需要翻阅后面的部分了解 更加细节的信息。 2、关于 SolrCores 和 Collections 的一点儿东西 对于单独运行的 Solr 实例,它有个东西叫 SolrCore(Solr.xml 中配置的),它是本质上独立的 索引块。如果你打算多个索引块,你就创建多个 SolrCores。当同时部署SolrCloud 的时, 独立的索引块可以跨越多个 Solr 实例。这意味着一个单独的索引块能由不同服务器设备上多个 SolrCore 的索引块组成。我们把组成一个逻辑索引块的所有 SolrCores 叫做一个独立 索引块儿(collection)。一个独立索引块是本质上一个独立的跨越多个 SolrCore 索引块的索 引块,同时索引块尽可能随着多余的设备进行缩放。如果你想把你的两个 SolrCore Solr 建 立成 SolrCloud,你将有 2 个独立索引块,每个有多个独立里的 SolrCores 组成。 3、启动 下载 Solr4-Beta 或更高版本。 如果你还没了解,通过简单的Solr 指南让自己熟悉Solr。注意:在通过指南了解云特点前,重设所有的配置和移除指南的文档.复制带有预先存在的 Solr 索引的例子目录将导致文档计数关闭Solr 内嵌使用了Zookeeper 作为集群配置和协调运作的仓储。协调考虑作为一个包 含所有 Solr 服务信息的分布式文件系统。 如果你想用一个其他的而不是 8983 作为 Solr 端口,去看下面’ Parameter Reference’部分下 的关于solr.xml 注解 例 A:简单的 2 个 shard 集群 这个例子简单的创建了一个代表一个独立索引块的两个不同的 shards 的两个 solr 服务组成

Solr总结-吐血总结

Solr调研总结 1. Solr 是什么? Solr它是一种开放源码的、基于Lucene Java 的搜索服务器,易于加入到Web 应用程序中。Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于HTTP 的管理界面。可以使用Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。Solr的特性包括: ?高级的全文搜索功能 ?专为高通量的网络流量进行的优化 ?基于开放接口(XML和HTTP)的标准 ?综合的HTML管理界面 ?可伸缩性-能够有效地复制到另外一个Solr搜索服务器 ?使用XML配置达到灵活性和适配性 ?可扩展的插件体系 2. Lucene 是什么? Lucene是一个基于Java的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是Apache Jakarta(雅加达)家族中的一个开源项目。也是目前最为流行的基于Java开源全文检索工具包。目前已经有很多应用程序的搜索功能是基于Lucene ,比如Eclipse 帮助系统的搜索功能。Lucene能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索。

3. Solr vs Lucene Solr与Lucene 并不是竞争对立关系,恰恰相反Solr 依存于Lucene,因为Solr底层的核心技术是使用Lucene 来实现的,Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene 不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括Solr: Solr 是Lucene面向企业搜索应用的扩展。 Solr与Lucene架构图: Solr使用Lucene并且扩展了它! ?一个真正的拥有动态字段(Dynamic Field)和唯一键(Unique Key)的数据模式(Data Schema) ?对Lucene查询语言的强大扩展! ?支持对结果进行动态的分组和过滤 ?高级的,可配置的文本分析 ?高度可配置和可扩展的缓存机制 ?性能优化

solr使用手册

Solr全文检索服务 一、企业站内搜索技术选型 ?在一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查 询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按 相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 1.使用Lucene实现?什么是Lucene ? ?Lucene是一个基于Java的全文信息检索工具包,它不是一个完整 的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是Apache Jakarta(雅加达) 家族中的一个开源项目。也是目前 最为流行的基于Java开源全文检索工具包。目前已经有很多应用程 序的搜索功能是基于Lucene ,比如Eclipse 帮助系统的搜索功能。 Lucene能够为文本类型的数据建立索引,所以你只要把你要索引的 数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索 ●单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索 引维护、索引性能优化、搜索性能优化等,因此不建议采用。 2.使用Google或Baidu接口? ●通过第三方搜索引擎提供的接口实现站内搜索,这样和第三方引擎系统依 赖紧密,不方便扩展,不建议采用。 3.使用Solr实现? Solr是什么? ?Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于 Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语 言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。 ?Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中, Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一 个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删 除、更新索引。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr

solr查询语法

solr查询语法 Solr通过查询分析器的插件框架支持多种查询语法。在现有的分析器实现的插件,在Javadoc中看到qparserplugin的所有子类,和在QueryParser wiki页面查看。 指定查询分析器 用户可以指定在大多数地方,接受使用localparams语法查询字符串查询类型,例如:下面的查询字符串指定Lucene/Solr查询的默认操作”AND“和默认field的“text”: q={!lucene q.op=AND df=text}myfield:foo +bar –baz 在标准的SOLR搜索处理程序,该deftype参数可用于指定主查询的默认类型(IE:q参数)但它只影响主查询——所有其他查询参数的默认类型仍将Lucene。 q={!func}等效于solr标准查询的defType=func&q=popularity Default QParserPlugin: LuceneQParserPlugin 标准查询分析器语法Sol分析器是的Lucene的查询语法的一个超集,某些字符特殊和那些字符如果你想 与Lucene查询分析器的差异 在solr 中查询差异报告: 1、范围查询[ a TO z ],前缀查询a*,和通配符查询*b是常数评分(所有匹配的文件得到相同的分数)。 评分因素TF IDF,index boost,是没有用的。不限制terms次数的(如在Lucene的过去的版本)

2、A*可用于任一或两个端点来指定一个开放的范围查询。 field:[* TO 100]查询所有小与等于100的 field:[100 TO *]查询所有大于等于100的 field:[* TO *]查询所有文档 3、纯消极的查询(所有条款禁止)是允许的。 -inStock:false查询isStock字段值不是false的 -field:[* TO *]查询不在field字段内的值 4、函数查询 _val_:myfield _val_:"recip(rord(myfield),1,2,3)" 4、嵌套的任何类型的查询分析器查询支持(通过qparserplugin)。引用通常要封装嵌套查询如果它包含 保留字符。 例如:_query_:"{!dismax qf=myfield}how now brown cow" 虽然不是专门的语法差异,请注意如果你使用Solr”DateField”型,在这些领域的任何查询(典型的范围查询)应使用完整的ISO 8601的语法,,或datemath语法来获得相关数据。 ?timestamp:[* TO NOW] ?createdate:[1976-03-06T23:59:59.999Z TO *] ?createdate:[1995-12-31T23:59:59.999Z TO 2007-03-06T00:00:00Z]?pubdate:[NOW-1YEAR/DAY TO NOW/DAY+1DAY] ?createdate:[1976-03-06T23:59:59.999Z TO 1976-03-06T23:59:59.999 Z+1YEAR] ?createdate:[1976-03-06T23:59:59.999Z/YEAR TO 1976-03-06T23:59:5 9.999Z] dismax和edismax查询分析器 (E)的dismax查询分析器提供了查询时间字段级升压的粒度,更少的特殊语法。(E)dismax通常是最好的第一选择查询分析器面临Solr应用的用户。(e)在这里详细描述了dismax处理参数:dismaxqparserplugin和extendeddismax。 注:特殊字符转义网址 请注意,在Solr查询语法的许多特征(最显着的加号:“+”)是在URL中的特殊字符,所以在手动构建请

solr中文

solr中文:使用 Apache Solr 实现更加灵巧的搜索 第 2 部分: 用于企业的 Solr 疯狂代码 https://www.doczj.com/doc/fd3006279.html,/ ?:http:/https://www.doczj.com/doc/fd3006279.html,/DeveloperUtil/Article54041.html 本文举例源代码或素材下载 在本系列 第 1 部分我为您介绍了 Apache Solr种基于 HTTP 开源搜索服务器它可以很容易地和多种Web 应用集成我展示了 Solr 最基本功能包括索引、搜索和浏览介绍了 Solr 模式并解释了它在配置 Solr 功能方面作用在本部分中我将通过列举 Solr 作为大型生产环境中理想解决方案时所具备特性来完成对 Solr 介绍涵盖主题包括管理、缓存Cache、复制和可扩展性 请参阅 第 1 部分 来获得安装和设置 Solr 指导 配置和管理 本部分介绍了可用于监视和控制 Solr 功能性诸多选项首先来看看 Solr Administration Start Page该页可在 http://localhost:8080/solr/admin/ 找到旦找到了起始页在继续的前请务必花些时间熟悉下上面各种菜单选项在起始页中根据这些选项所提供信息区别对它们进行了分组: Solr 给出了有关这种活动模式(请参见 第 1 部分)、配置以及当前部署统计数据详细信息 App server 给出了容器当前状态包括 threading 信息以及所有 Java 系统属性列表 Make a Query 提供了调试查询所需快捷界面以及到功能更加全面查询界面链接 Assistance 提供了到外部资源有用链接以便理解和解决使用 Solv 可能遇到些问题 如下章节详细介绍了这些菜单选项并重点突出了其中管理特性 要使用 Solr 配置选项可以单击页上 CONFIG 链接这会显示当前 solrconfig.xml 文件您可以在 举例应用dw-solr/solr/conf 目录找到该文件现在让我们先来看看和索引和查询处理有关些常见配置选项而和 缓存Cache、复制 和 扩展 Solr 有关配置选项则留到后面章节再介绍 索引配置 Index 标记段定义了控制 Solr 索引处理低水平 Lucene 原因Lucene 基准发布(位于 Lucene 源代码contrib/benchmark 的下)包含了很多可用来对这些原因更改效果进行基准测试工具此外请参阅 参考资料 节中

高性能搜索solr 学习笔记 分享

高性能搜索SOLR 学习笔记分享 一.Query参数 1.CoreQueryParam查询的参数 1)q: 查询字符串,必须的。 2)q.op: 覆盖schema.xml的defaultOperator(有空格时用"AND"还是用"OR"操作逻 辑),一般默认指定。 3)df: 默认的查询字段,一般默认指定。 4)qt:query type,指定查询使用的Query Handler,默认为“standard”。 5)wt:writer type。指定查询输出结构格式,默认为“xml”。在solrconfig.xml中定义 了查询输出格式:xml、json、python、ruby、php、phps、custom。 6)echoHandler:是否在查询结果中显示使用的Query Handler名称。 7)echoParams:是否显示查询参数。none:不显示;explicit:只显示查询参数; all:所有,包括在solrconfig.xml定义的Query Handler参数。 8)indent - 返回的结果是否缩进,默认关闭,用indent=true|on 开启,一般调试 json,php,phps,ruby输出才有必要用这个参数。 9)version - 查询语法的版本,建议不使用它,由服务器指定默认值。 https://www.doczj.com/doc/fd3006279.html,monQueryParameters 1)sort:排序,格式:sort=+[,+]…。 示例:(inStock desc, price asc)表示先“inStock”降序, 再“price”升序, 默认是相关性降序。。 2)start:用于分页定义结果起始记录数,默认为0。 3)rows:用于分页定义结果每页返回记录数,默认为10。 4)fq:filter query。使用Filter Query可以充分利用Filter Query Cache,提高检索性 能。作用:在q查询符合结果中同时是fq查询符合的,例如: q=mm&fq=date_time:[20081001 TO 20091031],找关键字mm,并且date_time 是20081001到20091031之间的。 5)fl:field list。指定返回结果字段。以空格“ ”或逗号“,”分隔。 6)debugQuery:设置返回结果是否显示Debug信息。 7)explainOther:设置当debugQuery=true时,显示其他的查询说明。 8)defType:设置查询解析器名称。 9)timeAllowed:设置查询超时时间。 10)omitHeader:设置是否忽略查询结果返回头信息,默认为“false”。

Solr开发指南

Solr 全文检索技术

1.Solr介绍 15 2.Solr安装配置-SolrCore配置 15 3.Solr安装配置-Solr工程部署 10 4.Solr安装配置-Solr工程测试 15 5.Solr安装配置-多SorlCore配置 10 6.Solr入门--schema 20 7.Solr入门-安装中文分词器 15 8.Solr入门-自定义业务系统Field 20 9.Solr入门-SolrJ介绍10 10.Solr入门-SolrJ索引维护 20 11.Solr入门-数据导入处理器20 12.Solr入门-搜索语法 10 13.Solr入门-SolrJ-搜索 20 14.Solr案例-需求分析 10 15.Solr案例-架构设计 15 16.Solr案例-Service 20 17.Solr案例-Controller 20 18.Solr案例-主体调试 20 19.Solr案例-功能完善

1【Solr介绍】 1.1S olr是什么 Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。 Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。 1.2S olr与Lucene的区别 Lucene是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文检索引擎,Lucene提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者以Lucene为基础构建全文检索引擎。 Solr的目标是打造一款企业级的搜索引擎系统,它是一个搜索引擎服务,可以独立运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜索功能。 1.3Solr下载 从Solr官方网站(https://www.doczj.com/doc/fd3006279.html,/solr/ )下载Solr4.10.3,根据Solr的运行环境,Linux下需要下载lucene-4.10.3.tgz,windows下需要下载lucene-4.10.3.zip。 Solr使用指南可参考:https://https://www.doczj.com/doc/fd3006279.html,/solr/FrontPage。

【黑马程序员】面试题-利用solr实现商品的搜索功能

【黑马程序员】面试题-利用solr实现商品的搜索功 能 问题提出:当我们访问购物网站的时候,我们可以根据我们随意所想的内容输入关键字就可以查询出相关的内容,这是怎么做到呢?这些随意的数据不可能是根据数据库的字段查询的,那是怎么查询出来的呢,为什么千奇百怪的关键字都可以查询出来呢? 答案就是全文检索工具的实现,luncence采用了词元匹配和切分词。举个例子:北京天安门------luncence切分词:北京京天天安安门等等这些分词。所以我们搜索的时候都可以检索到。 有一种分词器就是ik中文分词器,它有细粒度切分和智能切分,即根据某种智能算法。 这就使用solr的最大的好处:检索功能的实现。 使用步骤; (1)solr服务器搭建,因为solr是用java5开发的,所以需要jdk和tomcat。搭建部署 (2)搭建完成后,我们需要将要展示的字段引入solr的库中。配置sring与solr结合,工程启动的时候启动solr (3)将数据库中的查询内容导入到solr索引库,这里使用的是solrj的客户端实现的。具体使用可以参考api (4)建立搜索服务,供客户端调用。调用solr,查询内容,这中间有分页功能的实现。solr高亮显示的实现。 (5)客户端接收页面的请求参数,调用搜索服务,进行搜索。

业务字段判断标准: 1、在搜索时是否需要在此字段上进行搜索。例如:商品名称、商品的卖点、商品的描述 (这些相当于将标签给了solr,导入商品数据后,solr对这些字段的对应的商品的具体内容进行分词切分,然后,我们就可以搜索到相关内容了) 2、后续的业务是否需要用到此字段。例如:商品id。 需要用到的字段: 1、商品id 2、商品title 3、卖点 4、价格 5、商品图片 6、商品分类名称 7、商品描述 Solr中的业务字段: 1、id——》商品id 其他的对应字段创建solr的字段。 [AppleScript] 纯文本查看复制代码 ? 01 02 03 04 05 06 07

solr中文文档

SOLR技术文档 1.了解lucene 原理,全文搜索概念,参考(https://www.doczj.com/doc/fd3006279.html,/category/30179) .建立 自己的索引库. 2.了解solr参考(https://www.doczj.com/doc/fd3006279.html,/developerworks/cn/java/j-solr1/, https://www.doczj.com/doc/fd3006279.html,/developerworks/cn/java/j-solr2/).并下载实例程序. 3.搭建SOLR服务器 3.1官方下载 apache-solr-1.3.0.zip 和tomcat5.5 3.2将apache-solr-1.3.0\example\webapps\solr.war部署有 tomcat 下 3.3设置 solr 环境变量 apache-tomcat-5.5.26\conf\Catalina\localhost\下新建solr.xml文 件内容如下: 设置e:/tomcat/solr为solr主目录,建立文件夹. 3.4将apache-solr-1.3.0\example\solr 下所有文件复制到e:/tomcat/solr下 3.5启动 tomcat -> 浏览http://localhost:8080/solr/admin/能访问Solr Admin 页面说明 Solr 服务器设置成功. 4.为Solr 创建索引库 4.1在 e:/tomcat/solr 目录下新建名为data 的文件夹,再在data 下新建index名为文件 夹 4.2将lucene 创建好的索引放入e:/tomcat/solr/data/index 下 5.Solr 索引设置 5.1在e:/tomcat/solr /conf 下solrconfig.xml, schema.xml <2>中的技术文档有详细说明 5.2中文支持,如果你的索引要支持中文搜索的话,在此推荐庖丁分词,参考 (https://www.doczj.com/doc/fd3006279.html,/topic/110148) schema.xml 设置如下: 中文词组分词 创建索引时 搜索时 中文单词分词

Solr文档

Solr 全文检索服务 1企业站内搜索技术选型 在一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。

1.1单独使用Lucene实现 单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优化等,因此不建议采用。 1.2使用Google或Baidu接口 通过第三方搜索引擎提供的接口实现站内搜索,这样和第三方引擎系统依赖紧密,不方便扩展,不建议采用。 1.3使用Solr实现 基于Solr实现站内搜索扩展性较好并且可以减少程序员的工作量,因为S olr提供了较为完备的搜索引擎解决方案,因此在门户、论坛等系统中常用此方案。 2什么是Solr 什么是Solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。 Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI 的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

solrconfig.xml配置详解

solrconfig.xml配置详解 solrconfig.xml包含了solr中大部分的配置信息。 Solrconfig.xml, schema.xml 和所有的配置文件都在solr的conf目录下,都是可以编辑的,除了admin UI。编辑admin ui请参加【编辑solr的admin ui配置文件.doc】。 Solrconfig.xml中的简单注释可以源代码中找到。 lib 指令可以在你的solrconfig.xml中指定。 dataDir parameter 除了默认目录外,指定索引存放位置,默认索引数据放在slor home下,如果使用replication ,这应该可以匹配replication 配置,如果此目录并不是绝对的,那么它是相对于你的目录中,是从您启动Solr的位置开始寻找。 说明:solr4.0以后,改变的值后,通过reload重新载入。 codecFactory 编解码器的工厂允许你使用自定义编解码器架构。例如:如果你想定义每

indexConfig 组件 这些设置控制低层次的行为的索引。详细信息请参阅示例中的solrconf.xml注释。 说明:在solr4.0以后,这个组件也是活的装置,通过reload可动态加载。 注意:在3.6版本之前,有两个不同的部分叫< indexdefaults >和,而现在这一段代替 。你仍然可以使用旧的配置为在3.6和4。x,但需要迁移时,撞lucenematchversion。迁移的最简单的办法是先例<indexconfig >部分都有注释,使用缺省值,然后自定义如果必要的话。 Update Handler 组件

中科融研R3企业搜素产品常用检索语法

R3 企业搜索产品常用检索语法 北京中科融研科技有限公司 2013年9月

Copyright Notice 版权说明 本文档是北京中科融研科技有限公司的产品文档,受版权法和国际公约的保护。中科融研不会对本手册中信息的任何变更做出通知,不对涉及北京中科融研科技有限公司的内容做出任何承诺。然而,中科融研一直在努力使本文档中所包含的信息更加准确,中科融研不对本文档中所出现的错误和冗余信息承担责任。 对于因使用本文档中所包含的信息所导致的任何直接的、偶然的、或者因果的损失,中科融研不承担任何责任。 只有明确接受最终用户许可协议的用户才被许可使用在本文档所提及的拥有版权的软件,在使用软件之前应该仔细阅读许可协议。非经公司授权任何人或单位不得以任何电子、机械、光学、化学、手工、或者其他形式和手段将本文档的任何内容在一个系统中复制、传播、存储、或者翻译成任何人类语言和计算机语言。 本文档可为演示目的而使用虚拟的姓名;对任何实际存在的个人、公司或者机构姓名(名称)的使用纯属巧合。

1 检索参数 q: 查询字符串,必不可少的参数 df:默认的查询字段,一般默认指定 wt:指定输出的结构格式,默认为"xml ",也可以是json、python、ruby、php、phps、custom q.op:有空格时检索的默认逻辑关系,值为AND 或者 OR sort:排序。格式为: sort=+,+... 示例:sort=date desc,price asc 表示先按 date 降序,再按 price 升序。 默认是相关行降序排列。 start:用于分页定义结果起始记录数,默认为0 rows:用于分页定义每页返回的记录数,默认为10 fq:filter query。使用FitlerQuery进行指定范围的过滤查询,提高检索效率。作用:在q查询符合结果中同时是fq查 询符合的。例如:q=mm&fq=date_time:[20081001TO 20091031],找关键字mm,并且date_time是20081001到 20091031之间的 fl:指定返回结果的字段,多个之间用逗号或者空格隔开

银河麒麟服务器操作系统-Solr适配手册

银河麒麟服务器操作系统Solr 软件适配手册

目录 目录................................................................... I 1概述 (2) 1.1系统概述 (2) 1.2环境概述 (2) 1.3SOLR 软件简介 (2) 1.4SOLR 优点 (2) 1.5SOLR 架构及原理 (3) 1.5.1全文检索 (3) 1.5.2索引创建和搜索过程 (3) 2SOLR 软件适配 (4) 1)下载并解压SOLR (4) 2)下载TOMCAT (4) 3)准备依赖包 (4) 4)配置SOLRHOME (5) 5)配置TOMCAT (5) 3验证SOLR 部署 (6)

1概述 1.1系统概述 银河麒麟服务器操作系统主要面向军队综合电子信息系统、金融系统以及电力系统等国家关键行业的服务器应用领域,突出高安全性、高可用性、高效数据处理、虚拟化等关键技术优势,针对关键业务构建的丰富高效、安全可靠的功能特性,兼容适配长城、联想、浪潮、华为、曙光等国内主流厂商的服务器整机产品,以及达梦、金仓、神通、南大通用等主要国产数据库和中创、金蝶、东方通等国产中间件,满足虚拟化、云计算和大数据时代,服务器业务对操作系统在性能、安全性及可扩展性等方面的需求,是一款具有高安全、高可用、高可靠、高性能的自主可控服务器操作系统。 1.2环境概述 1.3solr 软件简介 Solr 是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service 的API 接口。用户可以通过http 请求,向搜索引擎服务器提交一定格式的XML 文件,生成索引;也可以通过Http Get 操作提出查找请求,并得到XML 格式的返回结果。 Solr 是一个高性能,采用Java5 开发,基于Lucene 的全文搜索服务器。同时对其进行了扩展,提供了比Lucene 更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。 文档通过Http 利用XML 加到一个搜索集合中。查询该集合也是通过http 收到一个XML/JSON 响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema 来定义字段,类型和设置文本分析,提供基于Web 的管理界面等。 1.4Solr 优点 a.高级的全文搜索功能;

Solr查询,Solr语法,Solr更新分析

一.基本查询 q –查询字符串,必须的。 fl –指定返回那些字段内容,用逗号或空格分隔多个。 start –返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用。 rows –指定返回结果最多有多少条记录,配合start来实现分页。 sort –排序,格式:sort=+[,+]… 。示例:(inStock desc, price asc)表示先“inStock” 降序, 再“price” 升序,默认是相关性降序。 wt – (writer type)指定输出格式,可以有xml, json, php, phps, 后面solr 1.3增加的,要用通知我们,因为默认没有打开。 fq –(filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,例如:q=mm&fq=date_time:[20081001 TO 20091031],找关键字mm,并且date_time是20081001到20091031之间的。 q.op –覆盖schema.xml的defaultOperator(有空格时用”AND”还是用”OR”操作逻辑),一般默认指定 df –默认的查询字段,一般默认指定 qt –(query type)指定那个类型来处理查询请求,一般不用指定,默认是standard。 - 排除在要排除的词前加上“-” (不包含”号) 号 其它 indent –返回的结果是否缩进,默认关闭,用indent=true|on 开启,一般调试json,php,phps,ruby输出才有必要用这个参数。 version –查询语法的版本,建议不使用它,由服务器指定默认值。 [Solr的检索运算符] “:” 指定字段查指定值,如返回所有值*:*2 “?”2表示单个任意字符的通配 “*” 表示多个任意字符的通配(不能在检索的项开始使用*或者?符号)2 “~”2表示模糊检索,如检索拼写类似于”roam”的项这样写:roam~将找到形如foam和roams的单词;roam~0.8,检索返回相似度在0.8以上的记录。 2邻近检索,如检索相隔10个单词的”apache”和”jakarta”,”jakarta apache”~10 “^”2控制相关度检索,如检索jakarta apache,同时希望去让”jakarta”的相关度更加好,那么在其后加上”^”符号和增量值,即jakarta^4 apache 布尔操作符AND、||2 布尔操作符OR、2&& 布尔操作符NOT、!、-2(排除操作符不能单独与项使用构成查询) “+” 存在操作符,要求符号”+”后的项必须在文档相应的域中存在2 ( ) 用于构成子查询2 2 [] 包含范围检索,如检索某时间段记录,包含头尾,date:[200707 TO 200710] {}2不包含范围检索,如检索某时间段记录,不包含头尾 date:{200707 TO 200710} ” 转义操作符,特殊字符包括+ –& | ! ( ) { } [ ] ^ ” ~ * ? : “ 二.高亮 hl-highlight,h1=true,表示采用高亮。可以用h1.fl=field1,field2 来设定高亮显示的字段。

全文检索使用说明文档

Solr4.7使用说明文档 一:使用流程 1.Solr 是一种可供企业使用的、基于Lucene 的搜索服务器. 2.apache官方网站下载solr并解压,包括Solr工程例子.解压文件如下图1.按说明配置 仓库名称. 3.创建Solr工程,在WEB/IF下的config.properties文件中配置访问本地磁盘 中Solr仓库的访问路径: (eg:documentSolrUrl=http://localhost:8066/SENATOR-Sol r/document/) 4.在Solr工程web.xml配置过滤器等. 在src目录下创建service接口.实现类(在该类中编写创建,搜索和删除索引逻辑代码),以及hessian接口实现类. 5作为后台被其他系统调用,配置hessian配置文件. 5.在其他系统中如果用到全文检索 (1).配置前台hessian配置文件,保证调用到Solr工程中方法. (2).在上传文件时添加对应索引至仓库.修改时删除原有文件索引,添加新 的索引.删除文件时按照ID删除索引. 6.前台工程中配置Hessian文件.调用Solr工程中查询方法按关键字检索, 6.Solr配置 在本地磁盘新建Solr配置文件夹,比如D:/solr_config。此文件夹目录结构如图 core0文件夹相当于数据库,用来存储索引。dic extract文件夹存放Solr配置jar包,不用更改。core0/conf目录下有两个配置文件如图 schema.xml文件用来配置要存储的索引字段,solrconfig.xml是索引查询配置solr.xml用来引入要使用的索引数据库,结构如图

使用solr搭建你的全文检索

使用solr搭建你的全文检索 Solr 是一个可供企业使用的、基于 Lucene 的开箱即用的搜索服务器。对Lucene不熟?那么建议先看看下面两篇文档: 实战Lucene,第 1 部分: 初识 Lucene:https://www.doczj.com/doc/fd3006279.html,/developerworks/cn/java/j-lo-lucene1/ 用Lucene加速Web搜索应用程序的开发:https://www.doczj.com/doc/fd3006279.html,/developerworks/cn/web/wa-lucene2/ 一、 solr介绍 solr是基于Lucene Java搜索库的企业级全文搜索引擎,目前是apache的一个项目。它的官方网址在https://www.doczj.com/doc/fd3006279.html,/solr/。solr需要运行在一个servlet 容器里,例如tomcat5.5。solr 在lucene的上层提供了一个基于HTTP/XML的Web Services,我们的应用需要通过这个服务与solr 进行交互。 二、 solr安装和配置 关于solr的安装和配置,这里也有两篇非常好的文档,作者同时也是 Lucene Java 项目的提交人和发言人: 使用Apache Solr实现更加灵巧的搜索: https://www.doczj.com/doc/fd3006279.html,/developerworks/cn/java/j-solr1/index.html https://www.doczj.com/doc/fd3006279.html,/developerworks/cn/java/j-solr2/index.html 下面主要说说需要注意的地方。 Solr的安装非常简单,下载solr的zip包后解压缩将dist目录下的war文件改名为solr.war直接复制到tomcat5.5的webapps目录即可。注意一定要设置solr的主位置。有三种方法。我采用的是在tomcat里配置java:comp/env/solr/home的一个JNDI指向solr的主目录(example目录下),建立/tomcat55/conf/Catalina/localhost/solr.xml文件。

相关主题
文本预览
相关文档 最新文档