solr8學習

一:Solr簡介
       Solr是一個獨立的企業級搜索應用服務器,它對外提供類似於Web-service的API接口。用戶可以通過http請求,向搜索引擎服務器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,並得到XML格式的返回結果。

     Solr是一個高性能,採用Java5開發,

Solr

基於Lucene的全文搜索服務器。同時對其進行了擴展,提供了比Lucene更爲豐富的查詢語言,同時實現了可配置、可擴展並對查詢性能進行了優化,並且提供了一個完善的功能管理界面,是一款非常優秀的全文搜索引擎

二:Solr服務器的搭建
步驟:

(1)從solr官網下載http://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/8.0.0/solr-8.0.0.tgz下載

(2)配置java環境變量,jdk8

 (3)解壓下載的壓縮包

進入bin目錄

啓動之後localhost:8983進入管理頁面

點擊coreadmin進入創建核心的頁面

點擊addCore之前,首先要在 solr文件夾下創建和instanceDir同名的文件夾

同時把solr-8.0.0\server\solr\configsets\_default下的conf文件夾拷貝到新建的new_core文件夾下,然後點擊addcore,則新建成功。

在solr管理頁面的coreselector中就可以找到新建new_core核心。

 

 

 

三:Solr服務器配置中文分詞器
步驟:

(1)拷貝中文分詞器ik-analyzer-solr5-5.x.jar到server\solr-webapp\webapp\WEB-INF\lib文件夾下

(2)在Solr中的server\solr-webapp\webapp\WEB-INF下面創建classes文件目錄,用於存放中文分詞器的分詞配置

ext.dic的內容,比如如下:

高富帥
黑馬程序員
二維表
這樣的話,碰到這樣的詞就不會進行拆分了,所以,一些網絡新詞就可以在這裏進行配置。

IKAnalyer.cfg.xml文件 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
<properties>  
    <comment>IK Analyzer 擴展配置</comment>
    <!--用戶可以在這裏配置自己的擴展字典 -->
    <entry key="ext_dict">ext.dic;</entry> 
    
    <!--用戶可以在這裏配置自己的擴展停止詞字典-->
    <entry key="ext_stopwords">stopword.dic;</entry> 
    
</properties>
stopwords.dic內容:




a
an
and
are
as
 
這樣的話,對於上面的字就不會進行顯示處理了,因爲這些都是沒有意義的詞彙。

(3)在覈心solr家中,找到配置文件schema.xml,添加中文分詞器的配置。

添加如下內容:

<!--配置中文分詞器-->
    <fieldType name="text_ik" class="solr.TextField">
        <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
    </fieldType>
    <!--配置幾個域,這幾個就支持中文分詞了,當然自己根據需求進行創建即可-->
    <field name="title_ik" type="text_ik" indexed="true" stored="true"/>
    <field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/
(4)重啓solr start,進行測試是否配置完成。

(5)訪問Solr主頁,進行測試

四:Solr導入數據

  (1)增加jar包,在server\solr\new_core\文件夾下創建lib包,把

放進去

(2)創建配置文件

在server\solr\new_core\conf 中創建data-config.xml文件,

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource"
            driver="com.mysql.jdbc.Driver"
            url="jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8"
            user="root"
            password="admin"/>
<document>
    <entity name="product" query="SELECT id,name FROM product">
    <field column="id" name="id" />
    <field column="name" name="name" />
    </entity>
</document>
</dataConfig>
 

把data-config.xml配置到solrconfig.xml中,

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

(3)導入數據,

重新啓動solr,在管理頁面

 

entity中就是配置對象。

點擊execute按鈕把數據庫中數據導入到solr服務器中。可以勾選auto-refresh status進行實時處理。

至此導入數據完成

進行測試,但是發現一個問題,就是那麼沒有出來,只有id。

最後發現了,原來是我在date-config.xml中配置了name這個字段,在managed-schema沒有配置

 <field name="name" type="string" indexed="true" stored="true" required="true" multiValued="false" />

加上這句,最後測試正常了。後來發現這樣配置還是有問題,不能檢索,如果我name的值是中國人在西邊中的瓜,我用中國人來檢索卻檢索不出來,後來發現

<field name="name" type="text_ik" indexed="true" stored="true" required="true" multiValued="false" />

中的type應該是中文分詞類型。

 

對於java編程部分,參考上一遍solr文章

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章