溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

solr7.4創(chuàng)建core,導入MySQL數(shù)據(jù),中文分詞

發(fā)布時間:2020-07-21 14:34:45 來源:網絡 閱讀:8240 作者:wx5b8f9d554305e 欄目:大數(shù)據(jù)

#solr版本:7.4.0

一、新建Core

  1. 進入安裝目錄下得server/solr/,創(chuàng)建一個文件夾,如:new_core

  2. 拷貝server/solr/configsets/_default/conf/下的solrconfig.xml、protwords.txt、synonyms.txt、stopwords.txt文件和lang文件夾,到剛剛創(chuàng)建的new_core文件夾下

  3. 拷貝server/solr/configsets/_default/conf/下的schema.xml文件到剛剛創(chuàng)建的new_core文件夾下,將其重命名為schema.xml

  4. 進入solr頁面選擇Core Admin,設置好名字還有剛才新建的dir,Add Core
    solr7.4創(chuàng)建core,導入MySQL數(shù)據(jù),中文分詞

  5. 然后在core selector 就能看到剛才新建的core 了。

solr7.4創(chuàng)建core,導入MySQL數(shù)據(jù),中文分詞

二、導入MySQL數(shù)據(jù)

  1. 打開剛添加的solrconfig.xml文件 vi server/solr/new_core/solrconfig.xml,查找一下requestHandler標簽,在標簽同級下加入導入數(shù)據(jù)的配置
    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
        <str name="config">db-data-config.xml</str>
    </lst>
    </requestHandler>
  2. new_core下新增db-data-config.xml文件(樣例在安裝目錄example/example-DIH/solr/db/conf/下有),并添加如下配置:
    <dataConfig>
    <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/db_name" user="root" password="" />
    <document>
        <entity name="product" 
                    query="select product_id as id,title from table_name"
                 deltaImportQuery="select product_id as id,title from table_name where PRODUCT_ID='${dih.delta.id}'"
                    deltaQuery="select product_id as id from table_name where add_time > '${dataimporter.last_index_time}'">
        </entity>
    </document>
    </dataConfig>
  3. 下載mysql-connector-java驅動 https://dev.mysql.com/downloads/connector/j/
    解壓mysql-connector-java-(xxx).jar到安裝目錄下的server/solr-webapp/webapp/WEB-INF/lib
  4. 在頁面上選擇Dataimport應該有了
    solr7.4創(chuàng)建core,導入MySQL數(shù)據(jù),中文分詞
  5. 在Schema上添加字段,如title(要存在query屬性的sql語句能查出來的那些字段當中)
    solr7.4創(chuàng)建core,導入MySQL數(shù)據(jù),中文分詞
    solr7.4創(chuàng)建core,導入MySQL數(shù)據(jù),中文分詞
  6. 在Dataimport 上執(zhí)行導入,可以看到已經新增了4條記錄了
    solr7.4創(chuàng)建core,導入MySQL數(shù)據(jù),中文分詞
    然后在query上查看導入結果
    solr7.4創(chuàng)建core,導入MySQL數(shù)據(jù),中文分詞

三、增量導入MySQL數(shù)據(jù)

  1. 導入數(shù)據(jù)不可能每次全量導入,新增的數(shù)據(jù)只要增量導入就好,檢查db-data-config.xml配置,確保有deltaImportQuery, deltaQuery兩項
    last_index_time會保存在這個core的Instance目錄下的conf/dataimport.properties文件
    solr7.4創(chuàng)建core,導入MySQL數(shù)據(jù),中文分詞
  2. 現(xiàn)在我在數(shù)據(jù)表中再插入幾條數(shù)據(jù)
    solr7.4創(chuàng)建core,導入MySQL數(shù)據(jù),中文分詞
  3. 這次我們在頁面選擇delta-import執(zhí)行一下看看
    solr7.4創(chuàng)建core,導入MySQL數(shù)據(jù),中文分詞
  4. 再去看下結果,也成功導入
    solr7.4創(chuàng)建core,導入MySQL數(shù)據(jù),中文分詞
    5.這是細心的人會發(fā)現(xiàn)dataimport.properties記錄的是UTC時間,而數(shù)據(jù)表中用的是中國時間,要怎么讓它們一致呢?
    這里提供一個解決辦法,利用sql語句來轉換時區(qū):
    修改deltaQuery
    SELECT product_id AS id FROM table_name WHERE add_time > '${dataimporter.last_index_time}'

    改為

    SELECT product_id AS id FROM table_name WHERE add_time > CONVERT_TZ('${dataimporter.last_index_time}', '+00:00', '+08:00')

四、中文分詞

  1. 拷貝分詞jar到指定目錄server/solr-webapp/webapp/WEB-INF/lib/
    cp contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-7.4.0.jar server/solr-webapp/webapp/WEB-INF/lib/
  2. 編輯schema文件 vi server/solr/new_core/conf/managed-schema
    添加:
    <fieldType name="text_cn" 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>

    把title改為text_cn類型

  3. 重啟solr,title已經改為text_cn,但是還沒分詞效果
    solr7.4創(chuàng)建core,導入MySQL數(shù)據(jù),中文分詞
  4. 在dataimport選擇clean再full-import一次,重新導入數(shù)據(jù),再回到字段查看一下Term Info ,這次分詞成功了
    solr7.4創(chuàng)建core,導入MySQL數(shù)據(jù),中文分詞
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI