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的技术。
已有 0 人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐