solr indexing 和基本的数据操作

翻译自 Apache Solr Reference Guide

indexing:

solr的索引能够接受不同途径的index,包括XML文件,CSV文件,数据库里的表,或者word,PDF中的信息。

有三种方式可以建立solr的索引,可以用tika中的solr cell 来给word,PDF等office文件来建立索引,可以使用http请求来建,还可以使用提供的标准API,这种方式是最推荐的,如果作为一个应用程序的话。

这里有个最基本的数据结构,一个document包含多个field,一个field最起码有个name,和value,一个document中最起码有个field能够作为id的,当然在solr中他并不要求id是唯一的。

schema.xml跟index关联很大,analysis 这个field的时候会根据xml中的配置,把field的内容进行tokenize,如果有些fields没有被精确定义,他会被忽略或者映射到 dymamic field .

使用index handler上传数据:

在solrconfig.xml中配置了handler的路径,如果对url的路径有修改,别忘了修改这个

<requestHandler name="/update" class="solr.UpdateRequestHandler" />

如果document中有uniq key的时候,新增的文档会替换是这个key的文档,如果不指定uniq key,速度会快点,因为不需要做key的检测,你有u niq key 但是不想让他做check,可以使用{overwrite="false"} 这个参数。

commit操作时让发过去的数据正真生效,推荐solrconfig中的autocommit。

optimize操作可以优化index,提高检索效率,在一个非常大的索引中,优化可能会和一些时间来做,但是通过merge一些小文件成一个大的文件,效率会快很多。

使用集成tika的solr cell可以从xhtml,office的一套中提取内容

DIH:

data import handler: 可以从数据库, RSS,email站点,导入数据。

首先需要在 solrconfig.xml中配置,如下所示:

<requestHandler name="/dataimport"
class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="config">/path/to/my/DIHconfigfile.xml</str>
    </lst>
  </requestHandler>

 一个典型的DIHconfigfile.xml如下所示:

<dataConfig>
  <dataSource driver="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:./example-DIH/hsqldb/ex"
user="sa" />
<document>
<entity name="item" query="select * from item"
            deltaQuery="select id from item where last_modified >
'${dataimporter.last_index_time}'">
      <field column="NAME" name="name" />
      <field name="features" column="DESCRIPTION" />
 </entity>
</document>
</dataConfig>

 一目了然, item 是表名, queyr是sql, field表示solr中的field跟db中表的字段对应。

数据更新:

一般有两种方式,一种是更新一个或者多个field,不需要重新建立索引,还有一个是在nosql中常见的技术,给予版本号做更新,一种叫做 optimistic concurrency的技术。

猜你喜欢

转载自sharp-fcc.iteye.com/blog/2001723