`
韩悠悠
  • 浏览: 827216 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用cvs更新solr索引

    博客分类:
  • solr
 
阅读更多

 

使用cvs更新solr索引

 

Solr接受cvs的格式,进行索引。并且支持multi-valued你也可能在语法感兴趣的基于XML更新指令。

 

 

要求

 

Solr1.2是最早支持cvs格式更新索引的版本。

 

CVSrequest 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个索引标签,并且solrmulti-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),检查并覆盖重复的文件,基于solrschema中定义的唯一ID,如果你知道你的索引文件不包含任何副本,然后你想相当大的速度,设置overwrite=false

 

commit

 

提交更改后在这一要求所有记录都被索引。默认是commit=false以避免频繁的潜在性能的影响有。

Disadvantages

 

有没有办法提供文档或字段索引时提高CSV格式,但是许多指标不利用这一特征。因为updatecsv处理函数在一个较低的水平比dataimporthandlerDIH),内置的功能,但提供了诸如变压器,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

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics