1. 程式人生 > 實用技巧 >Solr匯入MySQL資料

Solr匯入MySQL資料

Solr匯入MySQL資料

1. 資料庫準備

  1. 資料庫需要開啟遠端訪問許可權

    mysql 5 或 mariadb方式

    grant all on *.* to 'root'@'%' identified by '你的密碼';
    

    oracle mysql 8方式

    create user 'root'@'%' identified by '你的密碼';
    
    grant all privileges on *.* to 'root'@'%';
    

2. 設定表對應關係

2.1 表結構

一個核心對應一個數據庫的表, 假如有一個商品表, 表結構如下:

2.2 設定欄位

開啟網頁-進入Solr的頁面, 設定欄位對應關係如下

  • title text_ik
  • sellPoint text_ik
  • price plong
  • barcode string
  • image string
  • cid plong
  • status pint
  • created pdate
  • updated pdate

2.3 Copy Field 副本欄位

查詢時需要按欄位查詢,例如 title:電腦, 可以將多個欄位的值合併到一個欄位進行查詢,預設查詢欄位 _text_

titlesellPoint 複製到 _text_ 欄位

3. Data Import Handler 配置

3.1 新增jar檔案

Data Import Handler 的 jar 檔案存放在 solr目錄/dist

目錄下

solr-dataimporthandler-8.1.1.jar
solr-dataimporthandler-extras-8.1.1.jar

複製這兩個檔案和 mysql 的 jar 檔案到 solr目錄/server/solr-webapp/webapp/WEB-INF/lib

3.2 dih-config.xml

配置mysql的連線及sql語句, 然後上傳到solr目錄/server/solr/pd/conf

<dataConfig> 
	<dataSource type="JdbcDataSource" 
			driver="com.mysql.jdbc.Driver" 
			url="jdbc:mysql://192.168.64.1:3306/pd_store"
			user="root" 
			password="123456"
			batchSize="100"
			autoCommit="false" /> 
    <!-- query屬性為查詢sql的語句, 這裡為查詢所有的商品 -->
	<document name="item"> 
		<entity name="item" pk="id" 
             query="SELECT id,title,sell_point sellPoint,price,barcode,image,cid,`status`,created,updated FROM pd_item"
             deltaQuery="SELECT id,title,sell_point sellPoint,price,barcode,image,cid,`status`,created,updated FROM pd_item WHERE updated &gt; date_add(str_to_date('${dih.last_index_time}','%Y-%m-%d %H:%i:%s'),interval 8 hour)" 
			 transformer="RegexTransformer">
		</entity> 
	</document> 
</dataConfig>

3.3 solrconfig.xml 中新增 DIH 配置

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">  
    	<str name="config">dih-config.xml</str>  
    </lst>  
</requestHandler>

3.4 重啟 solr

cd /usr/local/solr-8.1.1

bin/solr restart -force

4. 匯入資料

重啟 solr 後匯入資料,確認匯入的文件數量為 3160

查詢測試

在複製欄位 _text_ 中查詢 電腦

所有欄位中包含電腦的會被查詢出來

在標題中查詢 電腦

標題中含有電腦的會查詢出來

用雙引號查詢完整詞 "筆記本"

如果不加雙引號的話,則會進行分詞,加上雙引號以後就當成一個整體進行查詢

搜尋 +lenovo +電腦

代表的是選擇Lenovo 並且是電腦型別

搜尋 +lenovo -電腦

代表的是選擇Lenovo 但是排除電腦

統計 cid

在統計資料的最下面可以顯示記錄條數

價格範圍

Raw Query Parameters 輸入框中填入以下內容:

facet.range=price&facet.range.start=0&facet.range.end=10000&facet.range.gap=2000

多欄位統計

Raw Query Parameters 輸入框中填入以下內容:

facet.pivot=cid,status