solr第四篇(solr整合數據源)

相關文章:
solr第一篇(solr5.5.4下載linux安裝)
solr第二篇(Solr5.5.4集成Tomcat8部署)
solr第三篇(IK分詞器安裝配置)
solr第四篇(solr整合數據源)
設置完成第四篇必看php

#編輯/usr/local/tomcat/solr_home/new_core/conf下的solrconfig.xml
cd /usr/local/tomcat/solr_home/new_core/conf
vim solrconfig.xml
#首先配置jar位置
<lib dir="/usr/local/tomcat/tomcat8/webapps/solr/WEB-INF/lib" regex=".*\.jar" />
#在name="/select"  class="solr.SearchHandler"之上添加以下代碼
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
            <str name="config">data-config.xml</str>
        </lst>
</requestHandler>

#完成如上操做以後 在和solrconfig.xml的同目錄項目添加文件data-config.xml
#在當前目錄下建立文件
mkdir data-config.xml
#編輯data-config.xml
vim data-config.xml
#添加以下
<?xml version="1.0" encoding="UTF-8"?>  
<dataConfig>  
	#更改成本身的數據源地址
	<dataSource name="source1" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/solrdata" user="root" password="root" batchSize="-1" />  
  	<document>  
	#entity對應表
	<entity name="goods" pk="id"  dataSource="source1"   
		query="select * from  goods"  
		#配置增量更新須要使用
 		deltaImportQuery="select * from goods where id='${dih.delta.id}'"  
		#配置增量更新須要使用
		deltaQuery="select id from goods where updatetime> '${dataimporter.last_index_time}'">  
		#field對應列字段
		<field column="id" name="id"/> 
		<field column="name" name="name"/>  
		<field column="number" name="number"/>  
		<field column="updatetime" name="updatetime"/>  
     	</entity> 
  	</document>  
</dataConfig>
#其中deltaImportQuery,deltaQuery設置的內容是自動更新mysql數據到solr引擎中來所須要的。若是多個表再並列添加一個entity標籤

#編輯managed-schema
vim managed-schema
#添加剛纔數據源配置裏面的field字段
<field name="id" type="int" indexed="true" stored="true" required="true"  multiValued="false"/>
<field name="username" type="string" indexed="true" stored="true" />
#type="text_ik"表示使用自定義分詞 能夠中文分詞
<field name="nickname" type="text_ik" indexed="true" stored="true" />
<field name="password" type="string" indexed="true" stored="true" />
<field name="regTime" type="date" indexed="true" stored="true" />
#個人配置以下圖

#配置自動更新數據源
#在solr_home文件夾裏面建立conf文件,在conf裏面建立dataimport.properties文件
cd /usr/local/tomcat/solr_home
mkdir conf
cd conf
mkdir dataimport.properties
#編輯dataimport.properties 添加以下內容
#內容開始---------------------------
#################################################

#                                               #

#       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

#  修改爲你所使用的core,若是自定義了多個core,用逗號隔開
syncCores=new_core
#syncCores=new_core,new_core2,new_core3,....

#  solr server name or IP address
#  [defaults to localhost if empty]

# 這個通常都是localhost不會變
server=localhost

#  solr server port

#  [defaults to 80 if empty]

#  安裝solr的tomcat端口,若是你使用的是默認的端口,就不用改了,不然改爲本身的端口就行了
port=8080


#  application name/context

#  [defaults to current ServletContextListener's context (app) name]

#  這裏默認不改

webapp=solr

#  URL params [mandatory]

#  remainder of URL

#  這裏改爲下面的形式,solr同步數據時請求的連接

params=/dataimport?command=delta-import&clean=false&commit=true

#  schedule interval

#  number of minutes between two runs

#  [defaults to 30 if empty]

#這裏是設置定時任務的,單位是分鐘,也就是多長時間你檢測一次數據同步,根據項目需求修改

#  開始測試的時候爲了方便看到效果,時間能夠設置短一點

interval=1


#  重作索引的時間間隔,單位分鐘,默認7200,即5天;

#  爲空,爲0,或者註釋掉:表示永不重作索引

reBuildIndexInterval=7200


#  重作索引的參數

reBuildIndexParams=/select?qt=/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

#內容結束------------------------------

在/usr/local/tomcat/tomcat8/webapps/solr/WEB-INF/lib下添加自動增量更新Jar包
連接:https://pan.baidu.com/s/1KPf9qRPn3BePVLzdTFEvyQ
提取碼:wyn4
這個jar只適合solr5.5.x版本
個人數據源配置的庫和表 python

#執行這句話,用戶自動更新判別條件  意思就是結合上面data-config.xml
deltaQuery="select id from goods where regTime> '${dataimporter.last_index_time}'"來作更新
alter table user modify  regTime(因爲我這個表沒有設置updatetime使用regTime代替) TIMESTAMP  NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

好了測試一下
第一次先手動導入下數據
mysql

q: 查詢字符串(必須的)。*:*表示查詢全部;keyword:東看 表示按關鍵字「東看」查詢
fq: filter query 過濾查詢。使用Filter Query能夠充分利用Filter Query Cache,提升檢索性能。做用:在q查詢符合結果中同時是fq查詢符合的(相似求交集),例如:q=mm&fq=date_time:[20081001 TO 20091031],找關鍵字mm,而且date_time是20081001到20091031之間的。
sort: 排序。格式以下:字段名 排序方式;如advertiserId desc 表示按id字段降序排列查詢結果。
start,rows:表示查回結果從第幾條數據開始顯示,共顯示多少條。
fl: field list。指定查詢結果返回哪些字段。多個時以空格「 」或逗號「,」分隔。不指定時,默認全返回。
df: default field默認的查詢字段,通常默認指定。
Raw Query Parameters:
wt: write type。指定查詢輸出結果格式,咱們經常使用的有json格式與xml格式。在solrconfig.xml中定義了查詢輸出格式:xml、json、python、ruby、php、phps、custom。
indent: 返回的結果是否縮進,默認關閉,用 indent=true | on 開啓,通常調試json,php,phps,ruby輸出纔有必要用這個參數。
debugQuery: 設置返回結果是否顯示Debug信息。
dismax:
edismax:
hl: high light 高亮。hl=true表示啓用高亮
hl.fl : 用空格或逗號隔開的字段列表(指定高亮的字段)。要啓用某個字段的highlight功能,就得保證該字段在schema中是stored。若是該參數未被給出,那麼就會高 亮默認字段 standard handler會用df參數,dismax字段用qf參數。你可使用星號去方便的高亮全部字段。若是你使用了通配符,那麼要考慮啓用 hl.requiredFieldMatch選項。	
hl.simple.pre:
hl.requireFieldMatch: 若是置爲true,除非該字段的查詢結果不爲空纔會被高亮。它的默認值是false,意味 着它可能匹配某個字段卻高亮一個不一樣的字段。若是hl.fl使用了通配符,那麼就要啓用該參數。儘管如此,若是你的查詢是all字段(多是使用 copy-field 指令),那麼仍是把它設爲false,這樣搜索結果能代表哪一個字段的查詢文本未被找到
hl.usePhraseHighlighter:若是一個查詢中含有短語(引號框起來的)那麼會保證必定要徹底匹配短語的纔會被高亮。
hl.highlightMultiTerm:若是使用通配符和模糊搜索,那麼會確保與通配符匹配的term會高亮。默認爲false,同時hl.usePhraseHighlighter要爲true。
facet:分組統計,在搜索關鍵字的同時,可以按照Facet的字段進行分組並統計。
facet.query:Facet Query利用相似於filter query的語法提供了更爲靈活的Facet.經過facet.query參數,能夠對任意字段進行篩選。
facet.field:須要分組統計的字段,能夠多個。
facet.prefix: 表示Facet字段值的前綴。好比facet.field=cpu&facet.prefix=Intel,那麼對cpu字段進行Facet查詢,返回的cpu都是以Intel開頭的, AMD開頭的cpu型號將不會被統計在內。
spatial:
spellcheck: 拼寫檢查。

進行查詢
當前查詢了全部 而且進行了0-10分頁 linux

進行text_ik分詞並進行檢索 以前在managed-schema中配置了<field name="nickname" type="text_ik" indexed="true" stored="true" /> 
下面咱們使用這個字段進行檢索
能夠看到數據只有5條

爲了證實進行了分詞而不是模糊查詢
我進行以下搜索
能夠看到以下 仍是5條數據 而且有隻爲涼城的結果也展現出來了

下面測試增量更新  以前咱們設置了自動更新時間爲1分鐘作測試
當前user表數據只有22條
如今新增一條


能夠看到數據已經更新爲23條了
等待一分鐘後再去查詢全部發現已經更新了 web

如今測試多表多字段聯合檢索查詢
爲了方便我在虛擬機再添加一個表 只有三個字段的


已經建立成功了

添加了4條數據
sql

去更新data-conig.xml 和 managed-schema配置
cd /usr/local/tomcat/solr_home/new_core/conf
vim data-conig.xml
#添加entity以下
vim managed-schema
#添加字段以下圖


product表也配置增量更新

重啓tomcat solr再次導入數據 兩個表總共27條數據所有查詢出來了 apache

進行多字段查詢 結果以下


完成
因爲solr整合到項目中有不少方式 這裏就不在寫了 能夠百度博客json

相關文章
相關標籤/搜索