Solr搜索引擎搭建詳細過程


1    什么是solr

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

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

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

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

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

提供了一個管理界面,通過管理界面可以查詢Solr的配置和運行情況。

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

2     Solr和Lucene的區別

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

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

 簡單來說:如果不知道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:

陸續更新

 

 

如果有大佬願意打賞,感謝:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM