Solr Data Import 快速入門

2021-09-01 10:51:02 字數 4656 閱讀 4893

原文出處:

大概在 solr 1.3 剛出來的時候(2008 年底)就用過 dataimporthandler(dih),當時覺得很方便的。後來由於有好多限制,就自己寫了個做索引的框架。現有個簡單的應用要用 dih 來做(小資料量的表,可以用它來做)。備忘記錄下。

dataimporthandler 最大的優點是基本不用寫**,把資料庫(其實也可以用 http/file 資源)中的記錄放到索引中。現大概看下步驟:

1、編輯 solrconfig.xml 註冊乙個請求 uri 為 "/dataimport" 的請求處理器(org.apache.solr.handler.dataimport.dataimporthandler),**如:

<

requesthandler

name

="/dataimport"

class

="org.apache.solr.handler.dataimport.dataimporthandler"

>

<

lstname

="defaults"

>

<

strname

="config"

>data-config.xml

str>

lst>

requesthandler

>

data-config.xml

2、建立 data-config.xml 檔案放到 solr.home/conf 目錄下,內容如下:

<

dataconfig

>

<

datasource

type

="jdbcdatasource"

driver

="com.mysql.jdbc.driver"

url="jdbc:mysql://localhost/dbname"

user

="user-name"

password

="password"

/>

<

document

>

<

entity

name

="id"

query

="select id,name from mytable"

>

entity

>

document

>

dataconfig

>

3、在 schema.xml 裡建立 id 與 name 的字段宣告。

4、把 mysql 的 jdbc.jar 放到 solr.home/lib 目錄下。

5、啟動 solr 後,執行命令:

http://localhost:8080/solr/dataimport?command=full-import 這 url 告訴 solr 做全量索引,做索引中會刪除所有資料。當然也可以用 clean=false 引數來告訴它不刪除,但也會刪除相同id的(在 scheam.xml 的uniquekey 宣告的)。http://localhost:8080/solr/dataimport?command=full-import&clean=false

上面的是 mysql 欄位與 scheam.xml 宣告的一樣,當然不一樣時可以用 sql 的 as 來使它們一樣。

還可以用 data-config.xml 裡指定,如:

<

dataconfig

>

<

datasource

type

="jdbcdatasource"

driver

="com.mysql.jdbc.driver"

url="jdbc:mysql://localhost/dbname"

user

="user-name"

password

="password"

/>

<

document

>

<

entity

name

="id"

query

="select id,name from mytable"

>

<

field

column

="id"

name

="solr_id"

/>

<

field

column

="name"

name

="solr_name"

/>

entity

>

document

>

dataconfig

>

entity/field 中的 name 是指 scheam.xml 裡指定的,column 是 sql 裡出來的字段。

大多數,做索引時的資料不是在乙個表裡的,比較一對多的。dih 還提供多表取資料。

把 data-config.xml 改為:

<

dataconfig

>

<

datasource

type

="jdbcdatasource"

driver

="com.mysql.jdbc.driver"

url="jdbc:mysql://localhost/dbname"

user

="user-name"

password

="password"

/>

<

document

>

<

entity

name

="outer"

query

="select id,name,desc from mytable"

>

<

field

column

="id"

name

="solr_id"

/>

<

field

column

="name"

name

="solr_name"

/>

<

entity

name

="inner"

query

="select details from another_table where id ='$'"

>

<

field

column

="details"

name

="solr_details"

/>

entity

>

entity

>

document

>

dataconfig

>

在 scheam.xml 裡指定 solr_details 欄位為多值的 multivalued="true"。在上面 inner entity 裡的 sql 語句可以加引數 $ 就是 mytable 的 id 字段。

修改好後,重啟,再做一次索引就有效果了,一對多乙個缺點是會有 n+1 個 sql 查詢。對小資料量的索引合適用 solr data import。

Solr Data Import 快速入門

原文出處 大概在 solr 1.3 剛出來的時候 2008 年底 就用過 dataimporthandler dih 當時覺得很方便的。後來由於有好多限制,就自己寫了個做索引的框架。現有個簡單的應用要用 dih 來做 小資料量的表,可以用它來做 備忘記錄下。dataimporthandler 最大的...

Solr Data Import 快速入門

大概在 solr 1.3 剛出來的時候 2008 年底 就用過 dataimporthandler dih 當時覺得很方便的。後來由於有好多限制,就自己寫了個做索引的框架。現有個簡單的應用要用 dih 來做 小資料量的表,可以用它來做 備忘記錄下。dataimporthandler 最大的優點是基本...

分治 快排 快選

快排模板 include using namespace std const int n 1e5 10 int n,a n void quick sort int q,int l,int r quick sort q,l,j quick sort q,j 1,r intmain 快速選擇演算法 選擇...