Solr索引创建与更新-XML
在上一节中,我们成功启动了solr,并且将数据成功更新到solr中,本次我们来学习一下solr的更新方式。
solr提供了三种更新方式,xml、json、csv,这新更新方式在solr4.0里面都统一用solr.UpdateRequestHandler进行了支持,不过在提交的Content-type中需要设置相应的格式。
下面我们了解下solr更新索引的方式,先看下xml,xml格式算是最简单,最容易理解的格式,如果想理解solr能够处理的格式,可以参考下solr目录下example/exampledocs目录,里面后缀xml结尾的文档,都是solr支持的xml格式索引。
在上一篇文章中,我们执行过这个命令:
java -jar post.jar *.xml
这个命令实际上是利用了post.jar的提交功能,当然我们也可以自己提交文档,并且提交自己文档内容,如果想用xml格式提交的话。
我们直接以官网为例说明,同时会有solr安装包里面的例子补充,后面介绍json格式和csv格式也一样,不再赘述。
XML格式提供增加索引,和删除索引两种功能;那修改索引怎么办?你可以用增加索引的方法,但是可以设定覆盖,或者修改;查询的话就是另外一个话题了,以后会有分析。
增加索引的xml格式:
<add>
<doc>
<field name="employeeId">05991</field>
<field name="office">Bridgewater</field>
<field name="skills">Perl</field>
<field name="skills">Java</field>
</doc>
[<doc> ... </doc>[<doc> ... </doc>]]
</add>
这个是极其简单的xml格式,连校验的schema都没有,所以说格式的准确性和内容的正确性都需要自己校验。
看完这个格式,就能理解solr添加xml索引的方式了,是不是比较简单;下面简单解释一下标签属性:
add标签的可选属性:
overwrite="true"|"false":默认是true,同一个uniqueKey的文档会被覆盖
commitWithin="milliseconds":在规定时间内,文件会被加入索引。
doc标签的可选属性:
boost=<float>:默认是1.0,boost的含义见lucene
field标签的可选属性:
boost=<float>:默认是1.0,field标签的boost含义和doc字段的boost含义不同
boost使用的例子如下:
<add>
<doc boost="2.5">
<field name="employeeId">05991</field>
<field name="office" boost="2.0">Bridgewater</field>
</doc>
</add>
update="add"|"set"|"inc"
update的使用例子如下:add表示新添文档,set表示设置field值,inc是个原子操作,solr4,0支持
<add>
<doc>
<field name="employeeId">05991</field>
<field name="office" update="set">Walla Walla</field>
<field name="skills" update="add">Python</field>
</add>
如果field有多个值的话,同样可以对多个field使用update属性
<add>
<doc>
<field name="employeeId">05991</field>
<field name="skills" update="set">Python</field>
<field name="skills" update="set">Java</field>
<field name="skills" update="set">Jython</field>
</add>
两外还有commit和optimize这两个字段
<commit/>
<optimize/>
这两个字段的用法比较高级,其中commit分为hard commit和soft commit,前者确保索引修改对其它的请求可见;后者只保证对当前的这次操作之后的索引可见,如果JVM crash或者断点的话,后者所做的修改时不会被写到索引文件中,当然,后者肯定要更快点,如何使用还要仔细斟酌。optimize字段和hard commit类似,不过这个操作会强制索引文件合并;这个操作一定要慎重,因为合并索引文件费时费力费资源;其实optimize操作一般是不用操心的,由MergePolicy决定,这个参数会强制MergePolicy立即执行合并策略。
commit和optimize字段是个比较高级的语法,在更新时的考虑比较多,在这篇文章里面就说到这里,想要了解更多参考文档。
下面我们使用CURL命令来传递参数,提交更新。
关于curl命令,有不理解的地方请看这里:http://isilic.iteye.com/blog/1764049,下面curl的语法也比较简单,不多做解释,有疑问请点击前面的链接。
注意更新时一定要由Content-Type字段,并且值必须为text/xml,告诉程序调用Xml方式更新。
curl "http://localhost:8983/solr/update?commit=true" -H "Content-Type: text/xml" --data-binary '<add><doc><field name="id">testdoc</field></doc></add>'
提交的post请求数据就是xml格式
如果有其它的参数提交需求,也可以提交在curl命令后面:
curl "http://localhost:8983/solr/update?commitWithin=10000" -H "Content-Type: text/xml" --data-binary '<add><doc><field name="id">testdoc</field></doc></add>'
下面看下delete语法,按照id和query删除文档:
<delete>
<id>05991</id><id>06000</id>
<query>office:Bridgewater</query>
<query>office:Osaka</query>
</delete>
<rollback/>
<prepareCommit/>
这两个是专家级别Expert-Level的API,不多做解释了,一般用不到。
更新数据索引:
curl http://<hostname>:<port>/solr/update -H "Content-Type: text/xml" --data-binary '
<add>
<doc boost="2.5">
<field name="employeeId">05991</field>
<field name="office" boost="2.0">Bridgewater</field>
</doc>
</add>'
当然get请求也可以,不过get请求参数必须是url-encoded
http://localhost:8983/solr/update?stream.body=%3Cdelete%3E%3Cquery%3Eoffice:Bridgewater%3C/query%3E%3C/delete%3E
http://localhost:8983/solr/update?stream.body=%3Ccommit/%3E
如果想同时更新和删除文档,下面这种格式是错误的。
curl http://127.0.0.1:8983/solr/update/?commit=true -H "Content-Type: text/xml" --data-binary '<add><doc><field name="id">17</field></doc></add><delete><id>1234</id></delete>';
有点想当然了,准确的应该是将这些操作用update标签包起来
curl http://127.0.0.1:8983/solr/update/?commit=true -H "Content-Type: text/xml" --data-binary '<update><add><doc><field name="id">17</field></doc></add><delete><id>1234</id></delete></update>';
最后,XML格式更新索引部分算是结束了,XML格式算是使用最为悠久的格式之一了,所以solr对于XML格式的支持也是不遗余力,这个也很容易证明XML格式使用的广泛性。
下次我们讲解下其它格式的更新索引的方式。
分享到:
相关推荐
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML、JSON等...
Solr接受xml格式数据更新、提交、修改索引。
完全配置好的solr容器,直接修改web.xml设置一下solr core路劲即可
在tomcat的conf文件夹建立Catalina文件夹,然后在Catalina文件夹中在建立localhost文件夹,在该文件夹下面建立 apache-solr-3.6.0.xml 提交搜索资源并建立索引 cd /Volumes/Date/apache-tomcat-7.0.27/webapps/...
4.1 创建索引 7 4.1 删除索引 7 4.1 索引查询 8 5.配置文件分析 9 5.1 schema.xml 9 5.1.1 文件分析 9 5.1.2 文档注释 13 5.2 solrconfig.xml 16 6.Solr缓存 18 6.1 filterCache 18 6.2 queryResultCache 18 6.3 ...
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的...
Solr 8.11.2是8.x系列的最后一个版本,新版本已经是9.0版本了。 1,什么是solr? Solr是一个独立的企业级搜索应用服务器,他对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务提供一定格式...
Apache Solr 1.3.0发布,Apache Solr是一个性能强大的,基于 Lucene 的全文搜索的 开源企业级搜索服务器,拥有XML/HTTP,JSON APIs,hit highlighting, faceted search, caching, replication,web管理界面等很多功能...
基于solr-geo空间搜索 1、Solr的schema.xml配置 定义坐标field 2、Solr的data-config.xml配置 建立索引 3、java查询语法 坐标距离、分页、排序
索引:客户端(可以是浏览器可以是java程序)发送post请求到solr服务器,发给solr服务器一个文档(xml、json),就可以进行一个添加索引删除索引、修改索引的操作。 搜索:客户端(可以是浏览器可以是java程序)发送...
Solr是一个独立的企业级搜索应用服务器,基于Lucene。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。它可对外提供类似于Web-service的API接口。用户可以...
人们经常提到资讯检索程式库,虽然与搜索引擎有关,但不应该将资讯检索程式库与搜索引擎相混淆。 olr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。用户可以通过http请求,向搜索引擎服务器提交一定...
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。...Solrj 是访问 Solr 的 Java 客户端,它提供添加、更新和查询Solr 索引的接口。http://wiki.chenlb.com/solr/doku.php?id=solrj
2 Solr的安装与配置 13 2.1 在Tomcat下Solr安装 13 2.1.1 安装准备 13 2.1.2 安装过程 14 2.1.3 验证安装 15 2.2 中文分词配置 15 2.2.1 mmseg4j 15 2.2.2 paoding 19 2.3 多核(MultiCore)配置 22 2.3.1 MultiCore...
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的...
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的...
为何矮人自定义搜寻器和自动Solr索引更新器危险代码:目前未经过消毒的输入要求: crawler_lists必须可写crawler_json必须可写编辑config / config.php以获取Solr设置和抓取延迟使用表单来设置您的爬网参数。...
更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。 通过对 Solr 进行适当的配置, 某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此 外,很多 Lucene 工具(如 Nutch、...
dspace /:用于从DSpace的Solr索引提供数据的配置文件 dspace-route.xml:Metaproxy路由配置 dspace.pqf:将SRU索引名称映射到Solr索引名称 dspace-pql-to-solr.xsl:将Z39.50索引号映射到Solr索引名称 dspace-to-...
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的...