solr 導入數據


 

從sqlserver導入數據到solr, solr 采用的版本6.0.1,並且本機解壓到:F:\Tool\solr-6.0.1;

1. 命令啟動solr,創建core

     啟動,進入solr文件目錄下,執行:bin\solr start -p 8984

     創建core,執行:bin\solr create -c postcore

     檢查是否創建成功:http://127.0.0.1:8984/solr

2.  jar包添加,下載地址 https://gist.github.com/maxivak/3e3ee1fca32f3949f052

  • 下載jar包 sqljdbc4.jar , 並且復制到
    F:\Tool\solr-6.0.1\server\solr-webapp\webapp\WEB-INF\lib
  • 將solr-dataimporthandler-6.0.1.jar、solr-dataimporthandler-extras-6.0.1.jar復制到lib下面,這兩個文件位置:
  • F:\Tool\solr-6.0.1\dist
     復制到
    F:\Tool\solr-6.0.1\server\solr-webapp\webapp\WEB-INF\lib
  •  采用mmseg4j作為中文分詞,下載mmseg4j-solr-2.3.0.jar、mmseg4j-core-1.10.0.jar ,並且復制到:
    F:\Tool\solr-6.0.1\server\solr-webapp\webapp\WEB-INF\lib

3. 編輯solrconfig文件,添加dataimport

  •  路徑:
    F:\Tool\solr-6.0.1\server\solr\postcore\conf
  • 添加文本:
    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
        <str name="config">data-config.xml</str>
        </lst>
    </requestHandler>

4. 編輯data-config.xml

  • 路徑,如果不存在data-config.xml則創建
    F:\Tool\solr-6.0.1\server\solr\postcore\conf
  • 添加文本,deltalImportQuery:增量操作,deltaQuery: 刪除操作,對於其它字段所代表的意義簡單,就不多做解釋;
    <?xml version="1.0" encoding="UTF-8" ?>
    <dataConfig>
       <dataSource type="JdbcDataSource"
                    driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
                    url="jdbc:sqlserver://127.0.0.1; databaseName=postdb"
                    user="sa"
                    password="123456"/>
       <document>
                <entity name="post"
                pk="id"
                query="SELECT TOP 1000 [id],[type],[isdel],[msg],[createUser],[createTime] FROM [postdb].[dbo].[post]"
                deltalImportQuery="SELECT TOP 1000 [id],[type],[isdel],[msg],[createUser],[createTime] FROM [postdb].[dbo].[post] where id='${dih.delta.id}'"
                deltaQuery ="select id from [postdb].[dbo].[post] where updated_ad>'${dih.last_index_time}'">
                    <field column="id" name="id" />
                    <field column="type" name="type" />
                    <field column="isdel" name="isdel" />
                    <field column="msg" name="msg" />
                    <field column="createUser" name="createUser" />
                    <field column="createTime" name="createTime" />
                </entity>
       </document>
     </dataConfig>

     

5. 編輯managed-schema文件,solr6.0.1 沒有schema.xml文件

  • 打開managed-schema文件路徑,路徑:
    F:\Tool\solr-6.0.1\server\solr\postcore\conf
  • 配置分詞
    <fieldtype name="textComplex" class="solr.TextField" positionIncrementGap="100" multiValued="true">
        <analyzer>
            <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex"/>
        </analyzer>
    </fieldtype>
    <fieldtype name="textMaxWord" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
            <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" />
        </analyzer>
    </fieldtype>
    <fieldtype name="textSimple" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
            <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" />
        </analyzer>
    </fieldtype>
  • 配置field
  • <field name="allmm" type="textComplex" multiValued="true" indexed="true" required="false" stored="false" />
    <field name="type" type="int" indexed="true" stored="true" required="false" />
    <field name="isDel" type="boolean" indexed="true" stored="true" required="false" />
    <field name="msg" type="textComplex" indexed="true" stored="true" required="false" />
    <field name="createUser" type="textComplex" indexed="true" stored="true" required="false" />
    <field name="createTime" type="date" indexed="true" stored="true" required="false" />

    <copyField source="msg" dest="allmm" />
    <copyFiled source="createUser" dest="allmm" />
    <defaultSearchField>allmm</defaultSearchField>
    <solrQueryParser defaultOperator="OR"/>

     

6. 重啟solr服務

F:\Tool\solr-6.0.1>bin\solr restart -p 8984

7. 執行導入,點擊 execute 按鈕,全量導入;點擊refresh Status按鈕查看執行狀態

     

9. 測試分詞:可以看到在allmm,分詞分為哪些,然后就可以根據這些分詞進行查詢;

10. 查詢:關鍵字:“國家電網”,可以查詢到數據,如果關鍵字是 “國家”,就不會查詢到數據,這個是分詞導致的

 

至此sqlserver 導入數據到solr,基本完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM