搜索技術---solr


solr

企業站內搜索技術選型

在一些大型門戶網站、電子商務網站等都需要站內搜索功能,使用傳統的數據庫查詢方式實現搜索無法滿足一些高級的搜索需求,比如:搜索速度要快、搜索結果按相關度排序、搜索內容格式不固定等,這里就需要使用全文檢索技術實現搜索功能。

單獨使用Lucene實現

單獨使用Lucene實現站內搜索需要開發的工作量較大,主要表現在:索引維護、索引性能優化、搜索性能優化等,因此不建議采用。

使用GoogleBaidu接口 

通過第三方搜索引擎提供的接口實現站內搜索,這樣和第三方引擎系統依賴緊密,不方便擴展,不建議采用。

使用Solr實現

基於Solr實現站內搜索擴展性較好並且可以減少程序員的工作量,因為Solr提供了較為完備的搜索引擎解決方案,因此在門戶、論壇等系統中常用此方案。

 

 

什么是Solr

Solr Apache下的一個頂級開源項目,采用Java開發,它是基於Lucene的全文搜索服務器。Solr提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴展,並對索引、搜索性能進行了優化

Solr可以獨立運行,運行在JettyTomcat等這些Servlet容器中,Solr 索引的實現方法很簡單,用 POST 方法向 Solr 服務器發送一個描述 Field 及其內容的 XML 文檔,Solr根據xml文檔添加、刪除、更新索引 。Solr 搜索只需要發送 HTTP GET 請求,然后對 Solr 返回Xmljson等格式的查詢結果進行解析,組織頁面布局。Solr不提供構建UI的功能,Solr提供了一個管理界面,通過管理界面可以查詢Solr的配置和運行情況。

solr是基於lucene開發企業級搜索服務器,實際上就是封裝了lucene

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

Solr類似webservice,調用接口,實現增加,修改,刪除,查詢索引庫

 

SolrLucene的區別

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

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

Solr類似webservice,提供接口,調用接口,發送一些特點語句,實現增加,刪除,修改,查詢。

solr4.x快速入門

下載

Solr官方網站(http://lucene.apache.org/solr/ )下載Solr4.10.3,根據Solr的運行環境,Linux下需要下載lucene-4.10.3.tgzwindows下需要下載lucene-4.10.3.zip

Solr使用指南可參考:https://wiki.apache.org/solr/FrontPage。

下載solr-4.10.3.zip並解壓,解壓后目錄為: 

binsolr的運行腳本

contribSolr的一些擴展包,包括分詞器,聚類,語言識別,數據導入處理,非結構化內容分

析等.

dist該目錄包含build過程中產生的warjar文件,以及相關的依賴文件。我們之

前使用的solr.war實際上就是這個文件夾下的solr-4.40.war

docssolrAPI文檔

examplesolr工程的例子目錄:

l example/solr:

該目錄是一個包含了默認配置信息的SolrCore目錄。

l example/multicore

該目錄包含了在Solrmulticore中設置的多個Core目錄。

l example/webapps:

    該目錄中包括一個solr.war,該war可作為solr的運行實例工程。

l licensessolr相關的一些許可信息

2 使用solr內置jetty服務器運行solr

Jetty服務器是web容器,類似tomcat

啟動solr內置jetty服務器流程:

1、 啟動運行example/start.jar

a) 直接cmd命令行運行命令

b) 使用bat批處理文件運行jar

 2、 加載example/lib下面jetty服務器

3、 Jetty服務器加載example/webaaps/solr.war項目

4、 加載索引庫倉庫:example/solr

 

Solr首頁

 

索引倉庫core admin

 

索引庫

一個core admin索引倉庫)多個索引庫collection1,collection2…..

添加第一個索引庫

 

選擇索引庫

overView

 

Analysis

 

Dataimport

導入外部數據。導入mysql數據庫商品數據。

Documents

 

Files

索引庫配置文件拷貝,加載索引庫配置文件。

 

Query

 

管理界面

 

Dashboard

儀表盤,顯示了該Solr實例開始啟動運行的時間、版本、系統資源、jvm等信息。

Logging

Solr運行日志信息

Cloud:

CloudSolrCloud,即Solr雲(集群),當使用Solr Cloud模式運行時會顯示此菜單,如下圖是Solr Cloud的管理界面:

 

Core Admin

Solr Core的管理界面。Solr Core Solr的一個獨立運行實例單位,它可以對外提供索引和搜索服務,一個Solr工程可以運行多個SolrCoreSolr實例),一個Core對應一個索引目錄。

java properties

SolrJVM 運行環境中的屬性信息,包括類路徑、文件編碼、jvm內存設置等信息。

Tread Dump

顯示Solr Server中當前活躍線程信息,同時也可以跟蹤線程運行棧信息。

Core selector

選擇一個SolrCore進行詳細操作,如下:

 

Analysis(重點)

 

通過此界面可以測試索引分析器和搜索分析器的執行情況。

dataimport

可以定義數據導入處理器,從關系數據庫將數據導入 Solr索引庫中。

 

 

Document(重點)

 

通過此菜單可以創建索引、更新索引、刪除索引等操作,界面如下:

 

 

 

 

 

/update表示更新索引,solr默認根據id(唯一約束)域來更新Document的內容,如果根據id值搜索不到id域則會執行添加操作,如果找到則更新。

 

添加索引庫

 

 

 

 

 

修改

 

 

 

如果Id修改

 

如果Id不存在,添加。

 

刪除

 

 

 

query(重點)

 

System property替換   

 Solr 支持系統屬性替換,允許啟動JVM在任一Solr的配置文件指定字符串替換。

語法: ${property[:default value]}

替換是有效的在任何元素或屬性的文本。

這里是允許運行時決定數據目錄的一個例子:

     <dataDir>${solr.data.dir:./solr/data}</dataDir>  使用示例應用程序中

solr可以以這種方式啟動:

java -Dsolr.data.dir=/data/dir -jar start.jar  如果沒有指定

solr啟動時讀取 conf/solrcore.properties文件

#solrcore.properties  data.dir=/data/solrindex

解析運行替換目錄意思

 

  注意:在solrConfig配置文件里面使用${},這是solr語法格式。

  簡單解釋一下:

  Solr.就代表solrcore索引庫目錄:collection1這一層目錄。

  顧名思義solr.data.dir表示的意思就是collection1下面data目錄。

  這是solr一種約定,不必深究,知道solr.就是我們的索引庫目錄就ok

 

 

 

 

Solrj

 

什么是SolrJ

 

solrj是訪問Solr服務的java客戶端,提供索引和搜索的請求方法,SolrJ通常在嵌入在業務系統中,通過SolrJAPI接口操作Solr服務

 


免責聲明!

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



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