Solr8 從 MySQL8.0.20中 匯入資料

HuDu發表於2020-11-13

修改 solrconfig.xml 檔案

修改solrhome\demo_core\conf資料夾下的solrconfig.xml,新增dataimport

Solr 匯入資料庫資料

為了便於維護,我們就在requestHandler起始位置,約720行處,新增如下內容

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

建立data-config.xml

data-config.xml的作用:資料庫連線相關資訊、SQL以及查詢結果對映對應域中
在solrconfig.xml同級目錄下,建立data-config.xml

新增如下內容:

Solr 匯入資料庫資料

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
    <!-- 這是資料庫的基本資訊-->
    <dataSource type="JdbcDataSource"
              driver="com.mysql.cj.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/solr?userSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF8&amp;serverTimezone=UTC"
              user="root"
              password="szy10086"/>
    <!-- 這是對於的表的資訊,如果表中存在id ,name等特殊欄位,請避免衝突,將name屬性改成不同的名稱   如<field column="id" name="bid"/>  -->
    <document> 
        <entity name="products"  query="select pid,pname,catalog_name,price,description,picture from products ">
                 <field column="pid" name="id"/>  
                 <field column="pname" name="prod_pname"/>  
                 <field column="catalog_name" name="prod_catalog_name"/>  
                 <field column="price" name="prod_price"/>  
                 <field column="description" name="prod_description"/>  
                 <field column="picture" name="prod_picture"/>  
        </entity> 
  </document> 
</dataConfig>

query:代表查詢的SQL語句
column:SQL查詢的列名
Name:solr域field中的域名

定義域

修改同級目錄下的managed-schema檔案

Solr 匯入資料庫資料

在之前配置的中文分詞器後配置field域(這裡配置的域名要與data-config中的域名一樣):

Solr 匯入資料庫資料

其中prod_pname和prod_description需要模糊查詢(中文分詞),故將其型別改為solr_cnAnalyzer
<!-- ChineseAnalyzer 自帶的中文分詞器 -->
    <fieldType name="solr_cnAnalyzer" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
      </analyzer>
    </fieldType>

    <field name="prod_pname" type="solr_cnAnalyzer" indexed="true" stored="true" required="true"  /> 
    <field name="prod_catalog_name" type="string" indexed="true" stored="true" required="true"  /> 
    <field name="prod_price" type="pdouble" indexed="true" stored="true" required="true"  /> 
    <field name="prod_description" type="solr_cnAnalyzer" indexed="true" stored="true" required="true"  /> 
    <field name="prod_picture" type="string" indexed="false" stored="true" required="true"  />

啟動 solr 伺服器

在Dataimport中點選Execute,開始匯入資料,可以點選Auto-Refresh-Status,檢視重新整理狀態。

Solr 匯入資料庫資料

在Query介面點選Execute Query,能查詢到資料說明從mysql中匯入資料成功

Solr 匯入資料庫資料

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章