一、Solr概述java
(1)Solr與數據庫相比的優點web
搜索速度更快、搜索結果可以按相關度排序、搜索內容格式不固定等數據庫
(2)Lucene與Solr的區別tomcat
Lucene提供了完整的查詢引擎和索引引擎,目的是爲軟件開發人員提供一個簡單易用的工具包服務器
Solr的目標是打造一款企業級的搜索引擎系統,它是一個搜索引擎服務,能夠獨立運行,經過Solr能夠很是快速的構建企業的搜索引擎,經過Solr也能夠高效的完成站內搜索功能。app
二、Solr的Windows版本的安裝webapp
(1)目錄結構工具
Solr的啓動在bin目錄下,用的是內置的服務器不是很穩定測試
contrib:插件搜索引擎
dist:jar包
(2)安裝
目錄的內容是從solr中複製過來的:
在配置文件中配置:
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>D:\Program_files\solr\solrhome</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
(3)啓動
三、Solr的後臺界面
(1)添加核
在Solr的家目錄複製一個collection並修改目錄的名稱,打開目錄將配置文件中的name屬性也更改成目錄的名稱
效果:
(2)功能
analysis:分詞器
dataimport:導入數據庫數據
Documents:進行增刪改查
Query:查詢
Files:配置文件(在覈的conf目錄下)
Ping:測試服務是否存在
(3)schema.xml配置文件中的域
域:
<field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/> <field name="subject" type="text_general" indexed="true" stored="true"/> <field name="description" type="text_general" indexed="true" stored="true"/> <field name="comments" type="text_general" indexed="true" stored="true"/> <field name="author" type="text_general" indexed="true" stored="true"/> <field name="keywords" type="text_general" indexed="true" stored="true"/> <field name="category" type="text_general" indexed="true" stored="true"/> <field name="resourcename" type="text_general" indexed="true" stored="true"/> <field name="url" type="text_general" indexed="true" stored="true"/> <field name="content_type" type="string" indexed="true" stored="true" multiValued="true"/> <field name="last_modified" type="date" indexed="true" stored="true"/> <field name="links" type="string" indexed="true" stored="true" multiValued="true"/>
動態域:
<dynamicField name="*_i" type="int" indexed="true" stored="true"/> <dynamicField name="*_is" type="int" indexed="true" stored="true" multiValued="true"/> <dynamicField name="*_s" type="string" indexed="true" stored="true" /> <dynamicField name="*_ss" type="string" indexed="true" stored="true" multiValued="true"/> <dynamicField name="*_l" type="long" indexed="true" stored="true"/> <dynamicField name="*_ls" type="long" indexed="true" stored="true" multiValued="true"/> <dynamicField name="*_t" type="text_general" indexed="true" stored="true"/> <dynamicField name="*_txt" type="text_general" indexed="true" stored="true" multiValued="true"/> <dynamicField name="*_en" type="text_en" indexed="true" stored="true" multiValued="true"/> <dynamicField name="*_b" type="boolean" indexed="true" stored="true"/> <dynamicField name="*_bs" type="boolean" indexed="true" stored="true" multiValued="true"/> <dynamicField name="*_f" type="float" indexed="true" stored="true"/> <dynamicField name="*_fs" type="float" indexed="true" stored="true" multiValued="true"/> <dynamicField name="*_d" type="double" indexed="true" stored="true"/> <dynamicField name="*_ds" type="double" indexed="true" stored="true" multiValued="true"/>
拷貝域:
<copyField source="cat" dest="text"/> <copyField source="name" dest="text"/> <copyField source="manu" dest="text"/> <copyField source="features" dest="text"/> <copyField source="includes" dest="text"/> <copyField source="manu" dest="manu_exact"/>
實際搜索的是text域,就是將多個域進行合併,只搜索一個域
四、配置IK分詞器
(1)導入jar包
(2)新建classes目錄並建立配置文件
(3)自定義域的類型
<fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>
(4)自定義域
<field name="title_ik" type="text_ik" indexed="true" stored="true" /> <field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/>
(5)重啓測試