现在的位置: 首页 > 开源搜索引擎 > 正文
全文搜索服务器 Solr—csv格式索引数据导入篇
2014年06月03日 开源搜索引擎 ⁄ 共 1352字 评论数 2 ⁄ 被围观 3,684 views+

在上文全文搜索服务器 Solr—xml格式索引数据导入篇中我们提到使用xml文件的方式导入索引,速度会有所提升,达到1w个/s。但是同时也提到了xml文档的缺陷,文件格式的要求比较高。

本文中,推荐使用csv的方式来建立索引。弥补xml文档的缺陷。

下面就是具体的实现方式:

schema.xml的字段配置部分如下:

<field name="id" type="string" stored="true" indexed="true"/>
<field name="title" type="string" stored="true" indexed="true" omitNorms="false"/>

 我们的csv(books.csv)文件的内容如下:

id,title
1,"Solr cookbook"
2,"Some, book 1"
3,"Some, book 2"

为了能够将上面的csv数据正确的导入,我们需要对solrconfig.xml文件进行如下修改:

<requestHandler name="/update/csv" class="solr.CSVRequestHandler" startup="lazy">
    <lst name="defaults">
        <str name="separator">,</str>
        <str name="header">true</str>
        <str name="skip">publish_date</str>
    </lst>
</requestHandler>

 

说明:

startup="lazy":通过该参数告诉solr在第一次添加时才实例化这个更新处理程序

<str name="separator">,</str> : 通过该参数告诉solr 字段之间是通过“,”分隔

<str name="header">true</str>:通过该参数告诉solr在数据项之前含有头信息

<str name="skip">publish_date</str> :通过该参数告诉solr,publish_date 这列数据需要忽略掉

<str name="encapsulator">"</str>:通过该参数告诉solr数据项是通过双引号(")进行封装的

设置完毕,重启solr,并提交数据:

curl http://localhost:8080/solr/update/csv?commit=true --data-binary @books.csv -H 'Content-type:text/plain; charset=utf-8'

性能测试:

csv格式文件建立索引的速度也达到了1w个/s的速度。可以和xml格式相媲美。

特殊字符的处理:

由上面的配置可知,csv格式的索引数据中,涉及到的只有两个特殊字符逗号(,)和双引号(")。

在索引的数据中,逗号(,)是很常见的。而我们的csv文件格式是以逗号(,)作为分隔符的。所以,在出现逗号(,)的数据列的时候,可以将该列用双引号包住。这样solr就不会解析里面的逗号了(,)了。

上面解决了逗号(,)和分隔符的问题,但是导致了双引号(")和索引数据里面的双引号的冲突。解决方法是将数据中的双引号进行转义。转义的方式是"变成"",就是将一个单引号变成两个单引号。

这样的话,csv格式的索引文件的两个特殊字符都处理完了。

原创文章,转载请注明: 转载自成长的企鹅

本文链接地址: 全文搜索服务器 Solr—csv格式索引数据导入篇

关于我:成长的企鹅简介

目前有 2 条留言 其中:访客:1 条, 博主:0 条 引用: 1

  1. 伦家失恋了 : 2015年10月10日10:08:10  -49楼 @回复 回复

查看来自外部的引用: 1

给我留言

留言无头像?


×