日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

solr导入mysql数据库

發布時間:2025/4/16 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 solr导入mysql数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

感謝ITeye的博主viskyzz分享的經驗,筆者基本參考ta的方法。然而,解決中間出現的問題時也融入了自己的經驗。

查看ta的原文請戳:

http://tbwuming.iteye.com/blog/1152333

?

默認已經建好了數據庫的表。

配置過程:

1.改寫solrconfig.xml,向其中加入:

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

同時記得要導入相應lib,否則會報錯:requesthander init failure,java.lang.ClassNotFoundException: org.apache.solr.handler.dataimport.DataImportHandler

?<lib dir="../../../dist" regex="solr-dataimporthandler-\d.*\.jar" />

2.在與solrconfig.xml相同的目錄下,添加data-config.xml,寫入:

<dataConfig>
? <dataSource type="JdbcDataSource"
????????????? driver="com.mysql.jdbc.Driver" //一般都是這樣,這個看你下載的mysql的jdbc驅動中Driver.class的目錄層次,把.想成/就好
????????????? url="jdbc:mysql://localhost/你的數據庫名"
????????????? user="你的用戶名"
????????????? password="你的密碼"/>
? <document>
??? <entity name="id"
??????????? query="select * from course">
??? </entity>
? </document>
</dataConfig>?

3.下載mysql的jdbc驅動,將其中的.jar解壓出來,復制到$solr_home$/example/lib下。但是筆者啟動solr后發現還是會報錯not found jdbc driver。筆者找了很多資料,都說的是配置問題,但是上面的配置應該是沒有問題了。最后將.jar復制到$solr_home$/example/lib/ext下,就好了。

所以請復制到lib以及lib下的ext下吧!

4.根據數據庫的各個屬性(比如例子中的id,user,title,content,time),改寫schema.xml,最好是先備份原來的,中間出現各種報錯的話方便拯救。往里添加:
? <types>?? ?
???? <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>

???? <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>

???? <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
????? <analyzer type="index">
??????? <tokenizer class="solr.StandardTokenizerFactory"/>
??????? <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
??????? <filter class="solr.LowerCaseFilterFactory"/>
????? </analyzer>
????? <analyzer type="query">
??????? <tokenizer class="solr.StandardTokenizerFactory"/>
??????? <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
??????? <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
??????? <filter class="solr.LowerCaseFilterFactory"/>
????? </analyzer>
??? </fieldType>

???? <fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="0" positionIncrementGap="0"/> ?
</types>

<fields>
?? <field name="id" type="tint" indexed="true" stored="true" required="true" />
?? <field name="user" type="string" indexed="true" stored="true"/>
?? <field name="title" type="text" indexed="true" stored="true"/>
?? <field name="content" type="text" indexed="true" stored="true" />
?? <field name="time" type="date" indexed="true" stored="true" default="NOW"/> ?
</fields>

<uniqueKey>id</uniqueKey>
<defaultSearchField>title</defaultSearchField>
<solrQueryParser defaultOperator="AND"/>?
</schema>

(運行起來應該會報錯,錯誤原因往往是field的定義和原來schema中的定義重復,可以稍作刪改)

5.筆者為了防止重復定義,把上面的屬性皆改為:myid,myusr,mytitle,mycontent,mytime。接著報錯Document is missing mandatory uniqueKey field: id 。

經過各種嘗試+想像,發現是因為solr對文檔建索引時,要按照文檔的獨一無二的id,id是不可缺少的,相當于關系數據庫的主鍵。

因此,數據庫的表中必須有一項id屬性,可以是本身的主鍵,也可是為了索引而添加的。因此,表中的每一項其實相當于一個文檔。

筆者解決方法就是將數據庫中的主鍵myid改回id,并且刪掉schema.xml中的重復定義,就好了。

6.啟動solr,切到$solr_home$/example下,java -jar start.jar

7.若報錯QueryElevationComponent?requires?theschema?to?have?a?uniqueKeyField?implemented?using?StrField?at?org.apache.solr.handler.component.QueryElevationComponent.inform

,改寫solrconfig.xml,注釋掉以下:

<!-- Query Elevation Component
?????? http://wiki.apache.org/solr/QueryElevationComponent

?????? a search component that enables you to configure the top
?????? results for a given query regardless of the normal lucene
?????? scoring.
??? -->
? <searchComponent name="elevator" class="solr.QueryElevationComponent" >
??? <!-- pick a fieldType to analyze queries -->
??? <str name="queryFieldType">string</str>
??? <str name="config-file">elevate.xml</str>
? </searchComponent>

? <!-- A request handler for demonstrating the elevator component -->
? <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">
??? <lst name="defaults">
????? <str name="echoParams">explicit</str>
??? </lst>
??? <arr name="last-components">
????? <str>elevator</str>
??? </arr>
? </requestHandler>

8.運行命令:在瀏覽器中輸入:http://localhost:8983/solr/dataimport?command=full-import 來完成全量數據導入,在每次全量數據導入執行的時候,原有索引會被刪除,如果不想刪除原有索引,可以運行如下命令:http://localhost:8983/solr/dataimport?command=full-import&clean=false

9.進行搜索,在瀏覽器中輸入http://localhost:8983/solr/admin/,query就可以出來結果了!

轉載于:https://www.cnblogs.com/linlu1142/p/3210871.html

總結

以上是生活随笔為你收集整理的solr导入mysql数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。