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的技術。

 

 

 

發佈了91 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章