1. 程式人生 > >Solr:Slor初識(概述、Windows版本的安裝、新增IK分詞器)

Solr:Slor初識(概述、Windows版本的安裝、新增IK分詞器)

1、Solr概述

(1)Solr與資料庫相比的優勢

搜尋速度更快、搜尋結果能夠按相關度排序、搜尋內容格式不固定等

(2)Lucene與Solr的區別

Lucene提供了完整的查詢引擎和索引引擎,目的是為軟體開發人員提供一個簡單易用的工具包

Solr的目標是打造一款企業級的搜尋引擎系統,它是一個搜尋引擎服務,可以獨立執行,通過Solr可以非常快速的構建企業的搜尋引擎,通過Solr也可以高效的完成站內搜尋功能。

 

2、Solr的Windows版本的安裝

(1)目錄結構

 Solr的啟動在bin目錄下,用的是內建的伺服器不是很穩定

contrib:外掛

dist:jar包

(2)安裝

  • 將Solr的example的webapps目錄下的solr.war複製到tomcat的webapps目錄下並解壓
  • 將example目錄下的jar包放到tomcat的lib目錄下:
  •  配置家目錄:

 目錄的內容是從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)啟動

  • 先在bin目錄下啟動tomcat並訪問Solr

 

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域,就是將多個域進行合併,只搜尋一個域

 

4、配置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)重啟測試