solr更新,删除单个索引_第1页
solr更新,删除单个索引_第2页
solr更新,删除单个索引_第3页
solr更新,删除单个索引_第4页
solr更新,删除单个索引_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ApacheSolr 教程本文介绍的内容是根据 ApacheSolr 版本 009.02.08 编写的,如果你在使用一个不同版本的 Solr,请参看伴随发布版中的文档。概述准备开始索引数据更新数据O 删除数据查询数据O 排序文本分析O 分析调试总结概述这个文档使用一个例子来介绍运行 Solr 的基本知识。准备为了进行这个教程,你需要.1. Java1.5 或者更高版本。你可以从 Sun、旧 M、BEA 获得它。在命令行中运行 java-version 将显示版本号,确保版本号大于 1.5o2. 下载一个 ApacheSolr 发行版。3. 一个浏览器用来访问管理

2、页面,IE 的标签页看起来不是很好,推荐使用 FireFox 或者 Mozilla,开始请运行浏览器显示这个教程和在此机器上的 Solr 服务器,教程会正确地指向你的 Solr 服务器。unzip 你下载下来的 Solr 版本,并且改变你的工作目录到example目录。(注意,基本的目录结构可能会因你下载的版本不同而有一定的变化)。chrishasimov:solr$lssolr-nightly.zipchrishasimov:solr$unzip-qsolr-nightly.zipchrishasimov:solr$cdsolr-nightly/example/Solr 可以运行在你选择的

3、JavaServlet 容器上,为了简化这个教程,例子索引包含了一个 Jetty 的最小化安装。为了编译 JSP,这个版本的 Jetty 需要你从 JDK 中运行 java,而不是一个 JRE 中运行 Java。为了运行带有 Solr 应用程序的 Jetty 和例子配置,仅需运行 start.jar.chrishasimov:/solr/example$java-jarstart.jar1mainINFOorg.mortbay.log-Loggingtoorg.slf4j.impl.SimpleLogger1f436f5via0rg.mortbay.log.Slf4jLog334mainINF

4、Oorg.mortbay.log-Extractjar:file:/home/chrish/solr/example/webapps/solr.war!/to/tmp/Jetty_solr/webappFeb24,20065:54:52PMorg.apache.solr.servlet.SolrServletinitINFO:user.dir=/home/chrish/solr/exampleFeb24,20065:54:52PMorg.apache.solr.core.SolrConfigINFO:LoadedConfigsolrconfig.xml1656mainINFOorg.mortb

5、ay.log-StartedSelectChannelConnector:8983这个将会在 8983 端口启动 Jetty 应用服务器,在终端上会显示服务器输出的日志信息。通过在浏览器中输入 http:/localhost:8983/solr/admin/能看到 Solr 正在运行,这是 Solr 管理员的入口。索引数据你的 Solr 服务器运行起来了,但是它没有包含任何数据。你可以通过 POST 包含指令(添加、更新、删除文档,提交未决的添加、删除和优化索引命令qXML 文档来改变一个 Solr 索引。exampledocs 目录包含了 Solr 类型指令的例子,也可以在命令

6、行使用一个 java 工具 POST#据(这个脚本的名称为 post.sh,但是这个教程里我们将使用跨平台的 Java 客户端)。让我们继续这个学习,打开一个终端窗口,进入 exampledocs 目录,运行java-jarpost.jar命令并提供 XML 参数文件,指示 Solr 服务器的 URLchrishasimov:/solr/example/exampledocs$java-jarpost.jarsolr.xmlmonitor.xmlSimplePostTool:version1.2SimplePostTool:WARNING:MakesureyourXMLdocumentsare

7、encodedinUTF-8,otherencodingsarenotcurrentlysupportedSimplePostTool:POSTingfilestohttp:/localhost:8983/solr/update.SimplePostTool:POSTingfilesolr.xmlSimplePostTool:POSTingfilemonitor.xmlSimplePostTool:COMMITtingSolrindexchanges.你现在已经在 Solr 中有了两个已经索引的文档,并已经提交了这些改变。你现在可以在 Admin 管理页面上的MakeaQuery上搜索solr

8、就能返回结果。点击Search按钮,然后浏览下面的 URL.http:localhost:8983/solr/select/?stylesheet=&q=solr&version=2.1&start=0&rows=10&indent=on你可以使用下面的命令索引所有的例子数据(假设彳的 shell 支持*.xml 形式的匹配模式):chrishasimov:/solr/example/exampledocs$java-jarpost.jar*.xmlSimplePostTool:version1.2SimplePostTool:WARNING:Makes

9、ureyourXMLdocumentsareencodedinUTF-8,otherencodingsarenotcurrentlysupportedSimplePostTool:POSTingfilestohttp:/localhost:8983/solr/update.SimplePostTool:POSTingfilehd.xmlSimplePostTool:POSTingfileipod_other.xmlSimplePostTool:POSTingfileipod_video.xmlSimplePostTool:POSTingfilemem.xmlSimplePostTool:POS

10、Tingfilemonitor.xmlSimplePostTool:POSTingfilemonitor2.xmlSimplePostTool:POSTingfilemp500.xmlSimplePostTool:POSTingfilesd500.xmlSimplePostTool:POSTingfilesolr.xmlSimplePostTool:POSTingfilespellchecker.xmlSimplePostTool:POSTingfileutf8-example.xmlSimplePostTool:POSTingfilevidcard.xmlSimplePostTool:COM

11、MITtingSolrindexchanges.现在可以你可以使用默认的 LuceneQueryParser 语法查询所有排序的内容.videoname:video+video+price:*TO400更新数据你可能已经注意到,即使 solr.xml 已经被 POST服务器两次,但你搜索solr时仍然只得到一个结果。这是因为 schema.xml 例子文件指定了一个uniqueKey字段作为id。无论何时你向 Solr 发送指令添加一个文档,如果已经存在一个 uniqueKey 相同的文档, 它会自动地为你替换。 你通过查看在统计页面的CORE部分的 numDocs 和 maxDoc值来看刚才

12、发生的事情.http:/localhost:8983/solr/admin/stats.jspnumDoc 应该为 16(因为我们的 11 个 XML 例子文件包含了不止一个),maxDoc 可能比较大,因为其包含了在逻辑上已经删除了但是还没有从索引中删除的文档。你可以多次提交这些例子文件,但是 numDocs将不会增加,因为新的文档会替换旧的文档。编辑已经存在的 XML 文件修改一些数据,重新运行 java-jarpost.jar到你做的改变。命令,你将会在后续的搜索中看。删除数据你可以提交一个删除命令到更新的 URL 来删除数据,在标识符字段指定值,或者进行匹配多个文档的查询(这个要小心!

13、)。因为这些命令都非常小,在这里我们再命令上进行这些操作,而不是指定一个 XML 文件。执行下面的命令来删除一个文档java-Ddata=args-Dcommit=no-jarpost.jarSP2514N现在查看统计页面 UPDATEHANDLERS 分,deletesPending 应该为 1。如果你现在搜索 id:SP2514N 你仍能找到它,因为索引的改变是不可见的直到其数据更新到磁盘。现在向Solr 提交一个命令:java-jarpost.jar现在重新执行前面的搜索,将不会有匹配文档被发现。也可以重新访问统计页面,观察 UPDATE_HANDLERS和 COREB 分的改变。这里是

14、一个使用 delete-by-query 来删除在名字中有 DDR 勺内容:java-Ddata=args-jarpost.jarname:DDR提交是一个非常费时的操作,最好对一个索引一次提交多个改变,在最后提交再提交命令。也有一个优化命令,除了其完成提交命令相同的事情外,它会合并所有的索引段到一个单个的段中,这让搜索速度会更快,已经删除的文档也会从索引中删除。为了继续这个教程,我们需要把例子文档重新提交一边,使用下面的命令:java-jarpost.jar*.xml查询数据查询可以通过 HTTP 的 GET 方式,URL 的查询字符串中要包含 q 参数。你也可以传递一些可选参数来控制请求处

15、理器返回什么信息。例如,你可以使用fl参数来控制返回什么存储字段,还有如果关联值(relevancyscore)被返回时.q=video&fl=name,id(仅返回 name 和 id 字段)q=video&fl=name,id,score(同时返回关联值)q=video&fl=*,score(返回所有字段,同时还有关联值)q=video&sort=pricedesc&fl=name,id(排序:按 price 降序)Solr 提供了在管理页面进行查询的接口,这个允许设置不同的查询参数,这在调试查询时是很有用的。排序Solr 提供了一个简单的方法来排序

16、一个或者多个索引段。使用sort参数来指定fielddirection参数对.q=video&sort=pricedescq=video&sort=priceascq=video&sort=inStockasc,pricedescscore当指定一个排序时score也可以作为一个字段名.q=video&sort=scoredescq=video&sort=inStockasc,scoredesc如果没有制定排序,默认是关联值降序,这个和 Lucene 搜索 API 是一样的。文本分析文本字段一般通过把字段分割成单词来索引, 或者进行不同的转换, 例如转换

17、成小写、 移出重复值或者填充来增加关联性。通常为了匹配索引使用同样的转换来进行查询。例子查询阐释了改进关联性的转换:一个搜索 power-shot 匹配 PowerShot,adata 匹配 A-DATA,因为使用了 WordDelimiterFilter 和 LowerCaseFilter.个搜索name:printers匹配Printer,和features:recharging匹配Rechargeable,因为使用了EnglishPorterFilter.一个搜索1gigabyte匹配 GB,和 pixima 匹配 Pixma 因为使用了 SynonymFilter.使用了模式中定义的索

18、引字段和分析类型。当前服务器使用的模式可以使用管理页面的SCHEMA 旌接来访问。分析组件 Analyzers、Tokenizers、TokenFilters 的完整描述请访问/solr/AnalyzersTokenizersTokenFilters。分析调试有一个分析调试页面,在这里你能看到文本如何被分割成单词,同时显示了经过过滤器链中每一个过滤器后的结果。这里显示了CanonPowerShotSD500在名称字段如何作为一个值进行索引。表格的每一行显示了经过名称字段分析器 TokenFilter 之后的结果。在相同位置生成的 Tokens 显示在同一列,在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论