使用cvs更新solr索引
Solr接受cvs的格式,进行索引。并且支持multi-valued,你也可能在语法感兴趣的基于XML更新指令。
要求
Solr1.2是最早支持cvs格式更新索引的版本。
CVS的request handler需要在solrconfig.xml中配置,默认已经在solrconfig.xml的配置文件中存在了。
<!-- CSV update handler, loaded on demand -->
<requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy">
</requestHandler>
在solr4.0中,CVS被用在标准的UpdateRequestHandler中。
<requestHandler name="/update" class="solr.UpdateRequestHandler"/>
请注意,需要包括的内容类型:Content-type:application/csv 或则Content-type:text/csv
上传CSV文件的方法
CVS是通过/solr/update/csv 将文件上传到solr服务器。
例子
有一个样例CSV文件的例子/ exampledocs / books.csv可以用来添加文件到Solr服务器实例。
例子使用HTTP-POST的方式通过网络将CVS文件发送到solr服务器。
cd example/exampledocs
curl http://localhost:8983/solr/update/csv --data-binary @books.csv -H 'Content-type:text/plain; charset=utf-8'
上传一个本地CSV文件可以比在网络上通过HTTP发送更有效。此方法工作,必须远程流是启用的。看到xml下面的行,改变它的enableremotestreaming =“true”,并重新启动Solr。
<requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />
以下的请求会导致Solr直接读取输入文件:
curl http://localhost:8983/solr/update/csv?stream.file=exampledocs/books.csv&stream.contentType=text/plain;charset=utf-8
#NOTE: The full path, or a path relative to the CWD of the running solr server must be used.
参数
一些参数可以在每一个领域的基础上通过 f.<fieldname>.param=value。
例如:果CSV文件有多值字段(S)是由不同的分离器分离(S),然后他们可以分泰德基于下列额外的参数传递到 f.<fieldname>.split=true&f.<fieldname>.separator=<separator>或其他方式你可以有多值的域部分相同的CSV不同分离器及可更新,Solr索引基于以上语法。
分离器
指定作为字段分隔符的字符。默认是分离器=,
header
如果第一行的CSV输入包含字段或列名称。默认的header=true,如果字段名的参数是不存在的,这些字段添加文件的索引中也会被使用。
fieldnames
指定要添加文件时使用Solr索引以逗号分隔的字段名列表。如果CSV输入已经有一个标题,名称指定此参数将覆盖。
例如:fieldnames=id,name,category
skip
一个以逗号分隔的字段名列表输入中跳过。另一个跳过的方法是指定它的名字作为字段名长度为一零的字符串。
例子:
fieldnames=id,name,category&skip=name
跳过name字段,相当于
fieldnames=id,,category
skipLines
指定要丢弃CSV数据开始之前输入流中的行数(包括标题,如果存在的话)。默认是skiplines = 0。
trim
如果true删除前导和尾随空白值。CSV分析已经忽略前导空白默认情况下,但可能有结尾的空格,或可能有空格,被引用,因此不能删除。这可能是指定的全局,或在每一个领域的基础。默认的是trim=false
encapsulator
字符选择用来包围值保存如CSV分隔或空白字符,本标准的CSV格式处理封装器本身出现在一个封装的价值倍增的封装器。
在封装值引号CSV示例:
100,"this is a ""quoted"" string inside an encapsulated value"
默认的 encapsulator="
keepEmpty
指定默认的index为空的值值。这可能是指定的全局,或在每一个领域的基础。默认的是keepempty = false。
literal
所有文件添加固定的字段名称/值。
例如:添加一个“数据源”字段值等于“每个文档的索引从CSV产品”
literal.datasource=products
map
指定一个值与另一个之间的映射。在结肠的LHS的字符串将在右边的字符串替换。此参数可以在每一个领域的基础上在全局或指定。
例如:在每一个地方使用Absolutely替换true
map=Absolutely:true
例如:删除在字段foo中包括RemoveMe的值
f.foo.map=RemoveMe:&f.foo.keepEmpty=false
split
如果是true,该字段值使用另一个CSV解析器被分隔成多个值。CSV解析规则如分离器和封装器,可以在指定参数。
例如:在下面的输入
id,tags
101,"movie,spiderman,action"
为了索引成3个索引标签,并且solr的multi-valued 字段为tags,使用
f.tags.split=true
例如:以下有标签领域的空间分离和封装器输入单引号
id,tags
101,movie 'spider man' action
索引3个单独的标签为多值字段称为“tags”方案,使用
f.tags.split=true&f.tags.separator=%20&f.tags.encapsulator='
任何分裂目标Solr领域应该多值。
rowid
如果不为空,该文件在传入的参数名称字段名称应增加和当前行/ rowid添加新字段的值。如果您的CSV没有唯一的ID,使用cvs的行号也是可以的。如果你只是想指数在正是在原始的CSV文件行来自也有用。
例如:
curl "http://localhost:8983/solr/update?rowid=id" --data-binary @1987.csv -H 'Content-type:application/csv; charset=utf-8'
rowidOffset
在与rowid参数一起,ROWID被添加到field之前,这个整数将被添加到ROWID。
overwrite
如果ture(默认的是true),检查并覆盖重复的文件,基于solr在schema中定义的唯一ID,如果你知道你的索引文件不包含任何副本,然后你想相当大的速度,设置overwrite=false。
commit
提交更改后在这一要求所有记录都被索引。默认是commit=false以避免频繁的潜在性能的影响有。
Disadvantages
有没有办法提供文档或字段索引时提高CSV格式,但是许多指标不利用这一特征。因为updatecsv处理函数在一个较低的水平比dataimporthandler(DIH),内置的功能,但提供了诸如变压器,entityprocessors和进口的命令不可用时,使用updatecsv。也就是说,额外的考虑,应在CSV文件提供的数据格式以及它如何被你的Solr schema充满。
不像DIH,没有一个可查询的方式在执行后知道状态。
Tab-delimited importing
制表符分隔的导入
不要让“格式”的名字愚弄你,该程序可以加载您的制表符分隔的文件,甚至把斜杠进行转义而不是CSV封装。
例如,一个可以把MySQL表制表符分隔文件
SELECT * INTO OUTFILE '/tmp/result.text' FROM mytable;
此文件可以通过设置隔板选项卡导入Solr(占09)和逃避反斜杠(% 5C)
curl 'http://localhost:8983/solr/update/csv?commit=true&separator=%09&escape=\&stream.file=/tmp/result.text'
参考网址:
http://wiki.apache.org/solr/UpdateCSV
相关推荐
【Eclipse 中使用 CVS】知识点详解 Eclipse是一款广受欢迎的开源Java集成开发环境,由IBM推出并持续发展,成为了WebSphere家族的核心组件。对于个人开发者而言,Eclipse以其强大的功能和灵活性吸引了大量用户。在...
### Eclipse 下使用 CVS 的知识点详解 #### 一、Eclipse 和资源库集成的基本原则 - **基本原则概述**:Eclipse 设计之初便考虑到了软件开发过程中各领域之间的紧密联系,因此其集成环境支持多种资源库服务,这不仅...
### CVS使用说明与下载教程详解 CVS(Concurrent Versions System)是一种开源版本控制系统,用于管理软件项目在开发过程中的源代码版本控制。它能够跟踪每个文件的更改历史,允许团队成员并行工作,同时避免文件...
"Eclipse 中配置和使用 CVS" CVS 是一个 C/S 系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的。在 Eclipse 中,CVS 配置和使用非常重要,因为 Eclipse 自带的 repository ...
本课件介绍了在eclipse开发环境下安装和使用cvs插件的方法。cvs用于联合开发管理,在共同开发一个工程时使用cvs可以保证小组成员之间的协作和同步。
2. 更新代码:在工作目录中,使用`cvs update`命令获取他人最新的修改。 五、提交与合并 1. 修改文件后,使用`cvs add`命令添加新文件,`cvs remove`删除不再需要的文件。 2. 提交更改:使用`cvs commit`命令将更改...
【MyEclipse使用CVS】 MyEclipse是一款强大的Java集成开发环境,它集成了许多功能,包括对版本控制系统的支持,如CVS(Concurrent Versions System)。CVS是一种广泛使用的开源版本控制系统,允许开发者协作开发...
【Eclipse中CVS使用详解】 CVS,全称为Concurrent Versions System,是一种广泛使用的开源版本控制系统。在软件开发过程中,版本控制对于团队协作至关重要,它可以帮助开发者追踪代码的修改历史,协同工作,并确保...
- 使用场景:大约20%的工作时间用于代码提交与更新,而80%的时间则花费在代码的编写、测试等阶段,因此CVS的操作主要集中在代码的更新与提交上。 #### 二、CVS基本命令与配置 **设置CVS环境变量**:在使用CVS之前...
4. **更新**:使用`cvs update`命令将仓库的最新更改同步到本地工作拷贝。 5. **提交**:使用`cvs commit`命令将本地更改提交到仓库,需要提供提交消息。 6. **冲突解决**:当多人修改同一文件时,可能会发生冲突...
CVS的最简单使用方法主要包括安装、创建仓库、导入项目、添加和提交文件、获取项目副本、更新和同步、以及分支和合并操作。虽然这些只是CVS的基础操作,但对于理解和使用这个强大的版本控制系统来说已经足够。随着对...
### CVS使用注意事项详解 #### 一、概述 CVS(Concurrent Versions System)是一种源代码版本控制系统,主要用于软件开发过程中的版本控制管理。CVS能够有效地管理多个开发者的协同工作,确保代码的一致性和完整性...
在本文中,我们将深入探讨如何在Eclipse集成开发环境中安装、配置和使用CVS(Concurrent Versions System),这是一个流行的版本控制系统,用于管理软件项目。Eclipse作为一款强大的Java IDE,支持多种版本控制系统...
4. **更新与提交**:在本地修改代码后,使用`cvs update`来获取他人所做的更改,并用`cvs commit`提交自己的工作,这会将更改推送到服务器。 5. **冲突解决**:当两个或更多人同时修改同一文件时,CVS会识别冲突并...
Eclipse是一款广泛使用的Java集成开发环境(IDE),而CVS(Concurrent Versions System)是一种版本控制系统,用于管理软件项目的源代码。将Eclipse与CVS结合使用,开发者可以在Eclipse中方便地进行版本控制操作,如...
4. **版本控制操作**:现在,你可以开始使用CVS的基本操作,如"Add to Version Control"(添加文件到版本库)、"Commit"(提交更改)、"Update"(更新到最新版本)等。 5. **协同工作**:当团队成员对同一文件进行...
- **同步更新**:开发者定期运行`cvs update`,获取他人提交的最新变化。 - **冲突处理**:当多人同时修改同一部分代码时,可能出现冲突,需要手动解决。 4. **CVS的分支与标签** - **分支**:CVS支持创建分支,...
### 安装使用CVS #### 一、CVS简介 CVS(Concurrent Versions System)是一种开源的版本控制系统,用于管理和记录软件开发过程中的源代码版本变更历史。CVS支持多个用户同时对同一个项目进行修改,并能有效地解决...