一:solr啓動html
目前solr最高版本爲5.5.0版本,不少solr安裝都是說將server文件copy到tomcat中,可是solr版本自帶有jetty的啓動方式java
首先下載solr-5.5.0版本,解壓後文件目錄:mysql
打開readme.txt ,發現有之下的幾句話:web
告訴你使用命令行啓動的方式,本機爲windows系統,因此打開cmd(shift+郵件--->在此處打開命令端口),進入bin目錄,輸入命令solr startsql
這樣就算是啓動成功了,能夠直接在瀏覽器中輸入http://localhost:8983 查看solr管理後臺數據庫
二:建立solr coreapache
1.首先進入/server/solr 文件夾,建立一個文件夾,名稱爲你所建core的名稱, 這裏個人core取名爲markwindows
2.在mark目錄下建立一個core.properties文件,裏面寫上:name=mark瀏覽器
3.首先進入/server/solr/configsets/basic_configs,將conf目錄copy到剛纔的mark目錄下tomcat
4.將managed-schema文件修改成schema.xml 文件,這是solr比較核心的文件,用來定義索引
先看看這個schema.xml文件
第一行: ,將這個name改成咱們本身的core名稱:即mark
第113行定義了id,這個能夠任意修改
167行定義了惟一主鍵,這個主鍵能夠是任意的類型和字段,但必須是惟一非空的,當有重複的時候,solr將會替換掉以前所建立的索引。
這裏是一個默認的對文本的處理,其中配置的分詞器,過濾器等。
配置上這些其實就算成功建立了一個core,能夠打開後臺,能夠看到新添加了要給core selector.
三:配置solr 數據庫導入
solr有插件能夠直接從數據庫中導入數據,並建立索引。主要使用solr-dataimporthandler-5.5.0.jar
首先在solrhome/dist 中找到 solr-dataimporthandler-5.5.0.jar,solr-dataimporthandler-extras-5.5.0.jar,solr-core-5.5.0.jar三個包,一併copy到solrhomt/server/lib中
在網上下載一個mysql-connector-java.jar copy到solrhomt/server/lib中
在咱們本身的core mark中,找到solrconfig.xml文件
在這個文件的根節點下添加
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler>
這是給solr服務器添加一個severlet,用來接收dataimport請求。其中配置文件data-config.xml與solrconfig.xml放在同一個目錄下
建立一個文件data-config.xml
配置:
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/morequ" user="root" password="root"/> <document> <entity name="mark" query="select id,value,type,datam_id,create_time from mark where enable =0 " deltaImportQuery="SELECT id,value,type,datam_id,create_time from mark where enable =0 and id='${dih.delta.id}' " deltaQuery="SELECT id from mark where enable =0 and create_time > '${dih.last_index_time}'" > <field column="id" name="id" /> <field column="value" name="value" /> <field column="type" name="type" /> <field column="datam_id" name="datam_id" /> <field column="create_time" name="create_time"/> </entity> </document> </dataConfig>
使用dataimport須要一個配置properties,存放一些變量,新建dataimport.properties 文件放在與data-config.xml文件同目錄下
配置好重啓solr
在後臺,咱們看到了一個新的菜單:
command能夠選擇是全量更新,仍是增量更新。
四:配置增量更新定時任務
當有了數據導入後,並不能實現咱們想要的功能,則須要一個定時任務的東西去定時導入增量數據:
能夠下載apache-solr-dataimportscheduler-1.0.jar 包,
1.將apache-solr-dataimportscheduler-1.0.jar 放在solrhome/server/solr-webapp/WEB-INF/lib裏
注意,此包有一個問題,加載配置文件找不到
緣由在這個文件中,
這裏給他一個指定的文件路徑:
2. 放好jar包以後,須要配置配置文件
下載jar的時候,若是下的是with source版本,則裏面自帶一個dataimport.properties 配置文件,
注意,此時在solrhome/server/solr 中(注意,這裏不是jar包的存放位置webapp),建立一個conf文件夾,將dataimport.properties放在conf中
若是沒有的這裏貼出來配置文件:
################################################# # # # dataimport scheduler properties # # # ################################################# # to sync or not to sync # 1 - active; anything else - inactive syncEnabled=1 # which cores to schedule # in a multi-core environment you can decide which cores you want syncronized # leave empty or comment it out if using single-core deployment syncCores=mark # solr server name or IP address # [defaults to localhost if empty] server=localhost # solr server port # [defaults to 80 if empty] port=8983 # application name/context # [defaults to current ServletContextListener's context (app) name] webapp=solr # URL params [mandatory] # remainder of URL # 增量更新的請求參數 params=/dataimport?command=delta-import&clean=false&commit=true # schedule interval # number of minutes between two runs # [defaults to 30 if empty] # 這裏配置的是2min一次 interval=2 # 重作索引的時間間隔,單位分鐘,默認7200,即5天; # 爲空,爲0,或者註釋掉:表示永不重作索引 reBuildIndexInterval=0 # 重作索引的參數 reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true # 重作索引時間間隔的計時開始時間,第一次真正執行的時間=reBuildIndexBeginTime+reBuildIndexInterval*60*1000; # 兩種格式:2012-04-11 03:10:00 或者 03:10:00,後一種會自動補全日期部分爲服務啓動時的日期 reBuildIndexBeginTime=03:10:00
3.打開solrhome\server\solr-webapp\webapp\WEB-INF\web.xml
添加一個listener:
<listener> <listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class> </listener>
4.從新啓動solr,定時器任務則生效。
參考資料:
http://www.cnblogs.com/atyou/archive/2013/04/21/3033675.html