Solr 6.6環境搭建與Solr定義(一)


Solr6.6理解和環境搭建

前言

     為什么要引入Solr,它到底有什么優勢。假想有這樣一種情況,當我們在oracle去查詢一些東西,無非是使用like或者join(當查詢條件多,涉及的多表的話)這幾種操作。當數據量大的時候,很難相信在大型數據庫上去執行高速的查詢,有以下兩點原因:一是,數據庫本身在性能上缺乏亮點,所以我們總提性能。二是,松散的文本,查詢的話基本都是基於like,而join和like是數據庫的性能殺手,與最求高效快速的理念相違背。所以我們需要一種和sql完全不同的數據檢索方式,由此引出了solr。

  1. 1.        官方定義:

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

Solr是一個基於Lucene的Java搜索引擎服務器。Solr 提供了層面搜索、命中醒目顯示並且支持多種輸出格式(包括 XML/XSLT 和 JSON 格式)。它易於安裝和配置,而且附帶了一個基於 HTTP 的管理界面。Solr已經在眾多大型的網站中使用,較為成熟和穩定。Solr 包裝並擴展了 Lucene,所以Solr的基本上沿用了Lucene的相關術語。更重要的是,Solr 創建的索引與 Lucene 搜索引擎庫完全兼容。通過對Solr 進行適當的配置,某些情況下可能需要進行編碼,Solr 可以閱讀和使用構建到其他 Lucene 應用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 創建的索引。

簡單來說:solr就是一個開源的搜索引擎框架。

 

  1. 2.        原理:

     Solr對外提供標准的http接口來實現對數據的索引的增加、刪除、查詢。在 Solr 中,用戶通過向部署在servlet 容器中的 Solr Web 應用程序發送 HTTP 請求來啟動索引和搜索。Solr 接受請求,確定要使用的適當SolrRequestHandler,然后處理請求。通過 HTTP 以同樣的方式返回響應。默認配置返回Solr 的標准 XML 響應,也可以配置Solr 的備用響應格式。
可以向 Solr 索引 servlet 傳遞四個不同的索引請求:
add/update 允許向 Solr 添加文檔或更新文檔。直到提交后才能搜索到這些添加和更新。
commit 告訴 Solr,提交后就可以搜索到。
optimize 重構 Lucene 的文件以改進搜索性能。索引完成后執行一下優化通常比較好。如果更新比較頻繁,則應該在使用率較低的時候安排優化。一個索引無需優化也可以正常地運行。優化是一個耗時較多的過程。(官方:執行明確的優化,導致所有段的合並到一個。)
delete 可以通過 id 或查詢來指定。按 id 刪除將刪除具有指定 id 的文檔;按查詢刪除將刪除查詢返回的所有文檔。

也就是說:solr可以對數據進行增加、刪除、查詢。

 

  1. 3.        搭建solr環境條件

                        JDK:jdk1.8.0

                       開發環境:eclipse4.7

                       運行環境:apache-tomcat-8.0.32

                       Solr:solr-6.6.0

 

  1. 4.        搭建solr

解壓solr-6.6.0,打開解壓的目錄:

 

binSolr的腳本啟動工具目錄。

contrib放關於solr的擴展。

dist在這里能找到Solr的核心JAR包和擴展JAR包。當我們試圖把Solr嵌入到某個應用程序的時候會用到核心JAR包。

distàsolrj-lib包含構建基於Solr的客戶端時會用到的JAR包。

distàtest-framework包含測試Solr時候會用到的JAR包。

docs該文件夾里面存放的是Solr文檔,離線的靜態HTML文件,還有API的描述。

example包含Solr的簡單示例。

licenses各種許可和協。

server在本地把Solr作為服務運行的必要文件都存放在這里。

 

  1. 5.        部署屬於自己的Solr

a)         solr-6.6.0\server\solr-webapp下的webapp復制到tomcatwebapps目錄下,並改名為solr(名字可以改成其他)

 

 

 

b)         solr-6.6.0\server\lib\extjar包復制到apache-tomcat-8.0.32\webapps\solr\WEB-INF\lib目錄下

solr-6.6.0\dist下的solr-dataimporthandler-6.6.0.jarsolr-dataimporthandler-extras-6.6.0.jar復制到apache-tomcat-8.0.32\webapps\solr\WEB-INF\lib目錄下

solr-6.6.0\server\lib下的以metrics開頭的5jar包復制到apache-tomcat-8.0.32\webapps\solr\WEB-INF\lib目錄下,這三步的目標路徑都是一樣的。

如下圖:

 

 

 

c)          接下來創建存放core的目錄,我選擇的是E盤創建,tomcat是在D盤,在E盤創建solrhome文件夾,將solr-6.6.0\server\solr下的所有文件復制到E:\solrhome。如下圖:

 

d)         tomcat下的solr里的配置文件來指定我創建的存儲core的目錄。

打開apache-tomcat-8.0.32\webapps\solr\WEB-INF下的web.xml,定位到40行,將下面一段注解打開,並修改<env-entry-value>值為E:/solrhome

並把168行以及以下的注解掉,為什么要注解掉呢?這是一段權限代碼,也就是你在瀏覽器打開solr,其他人也可以登錄,並對core進行優化,占用和消耗資源,從而在打開solr時進行賬號密碼登錄,這里我就全部注解掉。如下圖:

 

 

注解掉
<!-- Get rid of error message -->
  <!--<security-constraint>
    <web-resource-collection>
      <web-resource-name>Disable TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint/>
  </security-constraint>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Enable everything but TRACE</web-resource-name>
      <url-pattern>/</url-pattern>
      <http-method-omission>TRACE</http-method-omission>
    </web-resource-collection>
  </security-constraint>-->

 

 

e)         apache-tomcat-8.0.32\webapps\solr\WEB-INF目錄下創建classes文件夾,並將solr-6.6.0\server\resources下的log4j.properties復制過去,如下圖:

 

 

f)          環境搭建完成,啟動tomcat,訪問localhost:8080/solr/index.html,成功訪問。

 


免責聲明!

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



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