Solr搜索引擎搭建詳細過程

1    什麼是solr

Solr 是Apache下的一個頂級開源項目,採用Java開發,它是基於Lucene的全文搜索服務器。Solr能夠獨立運行在Jetty、Tomcat等這些Servlet容器中。html

Solr提供了比Lucene更爲豐富的查詢語言,同時實現了可配置、可擴展,並對索引、搜索性能進行了優化。mysql

使用Solr 進行建立索引和搜索索引的實現方法很簡單,以下:web

* 建立索引:客戶端(能夠是瀏覽器能夠是Java程序)用 POST 方法向 Solr 服務器發送一個描述 Field 及其內容的 XML 文檔,Solr服務器根據xml文檔添加、刪除、更新索引 。sql

* 搜索索引:客戶端(能夠是瀏覽器能夠是Java程序)用 GET方法向 Solr 服務器發送請求,而後對Solr服務器返回Xml、json等格式的查詢結果進行解析,組織頁面佈局。Solr不提供構建頁面UI的功能,可是數據庫

提供了一個管理界面,經過管理界面能夠查詢Solr的配置和運行狀況。apache

 簡單來講:Solr相似咱們開發的web項目,是一個war包,把它放在tomcat下直接運行就好json

2     Solr和Lucene的區別

Lucene是一個開放源代碼的全文檢索引擎工具包,它不是一個完整的全文檢索應用。Lucene僅提供了完整的查詢引擎和索引引擎,目的是爲軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者以Lucene爲基礎構建全文檢索應用。瀏覽器

 Solr的目標是打造一款企業級的搜索引擎系統,它是基於Lucene一個搜索引擎服務,能夠獨立運行,經過Solr能夠很是快速的構建企業的搜索引擎,經過Solr也能夠高效的完成站內搜索功能。tomcat

 簡單來講:若是不知道Lucene,那麼配置Solr方面將步履維艱服務器

這裏是一篇之前寫的Lucene的使用案列:http://www.cnblogs.com/xuyiqing/p/8696660.html

 

有一個問題:咱們可使用數據庫查詢,爲何要用Solr呢?

答案:最大的一個緣由是效率會高  很 多 ,還有其餘緣由,好比SQL沒法作到相關度排序等等

 

另外一個問題:咱們爲何不用Lucene呢?

答案:Lucene的工做量過大,Solr是基於Lucene的框架,便捷完善,可配置可擴展,能夠高效完成站內搜索功能

接下來就開始:

 

搭建solr服務器(Tomcat):

注意:solr自己能夠運行,不過它是運行在jetty上的,相比Tomcat顯得不穩定,因此咱們要在tomcat中搭建Solr

準備一個Tomcat7和Solr4.10.3:網上下載便可

 

按這個路徑找到solr.war複製到Tomcat的webapp下

 

而後把這個war包解壓了:注意解壓後把war包刪了,由於solr文件夾裏要添加其餘東西,可是Tomcat每次啓動都會解壓war包覆蓋,因此須要刪了war包

 

按目錄找到這5個包:

 

把它們複製到這個文件夾中:

 

接下來:在剛纔的文件夾下新建一個文件夾:solrhome(充當索引庫)

把這個路徑的這些東西複製過去:

 

而後修改下這個配置文件:

 

在40行處修改以下:

 

好的,啓動Tomcat:

 

我訪問8080:

 

到這裏,搭建就成功了!

在這個頁面就能夠增刪改查索引了!

好比增(注意必須有id)

 

查:

 

可是尚未結束:

接下來修改配置文件

打開這裏:咱們須要關注的是這兩個配置文件

 

好的,接下來就配置它們:

schema.xml:配置域相關的信息

能夠打開看看,裏面是域的相關信息,只有裏面存在的域纔可使用!

固然,裏面還有一種動態域,好比*_s,*_i等等,前綴能夠任意寫

 

看看另外一個配置文件:

 這裏要配置中文分詞器

先導入這個包:

 

 

新建一個文件夾放入IK分析器配置文件:

 

這三個配置文件Lucene文章中:http://www.cnblogs.com/xuyiqing/p/8696660.html

注意三個文件的格式:UTF-8無BOM格式編輯

 

接下來:在剛纔提到的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"/>

 

新建的這兩個域支持IK分析器

測試下:重啓Tomcat

 

分析成功!

 

接下來,介紹下如何從數據庫導入數據:

首先,導入包(注意位置):

 

打開上面提到過的solrconfig.xml配置文件:

加入下面這些代碼:

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

 

在當前目錄下新建一個data-config.xml:

這裏導入之前我作的BBS項目中用戶的表

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
    <dataSource type="JdbcDataSource" 
    driver="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/Blog" 
    user="root" password="xuyiqing"/>
    <document>
        <entity  name="user"  
        query="select * from blog_user" >
            <field column="u_id" name="id"></field>
            <field column="username" name="username"></field>
            <field column="u_password" name="password"></field>
            <field column="qq" name="qq"></field>
            <field column="avatar" name="avatar"></field>
            <field column="article_count" name="count"></field>
        </entity>
    </document>
  </dataConfig>

 

只寫這些不夠的,還要在schema.xml中配置域:

    <field name="username" type="text_ik" indexed="true" stored="true"/>
    <field name="password" type="text_ik" indexed="false" stored="false"/>
    <field name="qq" type="text_ik" indexed="true" stored="true"/>
    <field name="avatar" type="string" indexed="false" stored="true"/>
    <field name="count" type="float" indexed="true" stored="true"/>

 

保存!重啓tomcat

 

導入成功!

咱們查詢一下(成功):

 

能夠按條件查詢:

 

 

到這裏搭建Solr就成功了

 

SolrJ:經過SorlJ的API操做Solr:

陸續更新

 

 

若是有大佬願意打賞,感謝:

相關文章
相關標籤/搜索