【Solr】- Apache SolrTM 5.3.1 Documentation

Solr Quick Start: Apache Solr官網翻譯java

概要

文檔主要包含Solr啓動、運行Solr導入各類形式的數據源到多個集合中,近距離體驗Solr管理員和搜索接口mysql

要求

  • 系統要求
  • Apache Solr 發佈包

開始

運行瀏覽器顯示指南,同一臺機器上的Solr服務器指南幫助正確入門Solr Server 開始解壓Solr發佈包,將Solr的解壓目錄放在工做目錄下,注意基礎目錄名可能與下載的Solr的版本號不一樣,例如Unix、Cygwin或者MacOS的shell版本不一樣linux

Linux指令

:$ ls solr*
    solr-5.0.0.zip
:$ unzip -q solr-5.0.0.zip
:$ cd solr-5.0.0/

Solr Cloud 結構層次圖

Solr Cloud: Solr 基於Zookeeper構建的分佈式搜索系統,zookeeper保證高可用sql

Collection: 對應standby模式下的Solr Coreshell

Shard(分片): 對應Collection邏輯劃分的Core,可理解爲多個Shard組成一個完整意義上的Solr Core,如果單機模式下:1 Solr Core = 1 Shard = 1 Core = 1 replica,Shard對於用戶是透明的,主要經過上一層的Collection提供一個Façade接口數據庫

Core: Solr Core 1個包含索引和配置文件的運行實例,一個Core對應一個Replica實際提供索引服務,SolrCloud提供冗餘機制,多個Replica提供的索引數據服務是相同的apache

Replica: Shard真實物理存儲,可提供相似HDFS的備份機制保證冗餘特性編程

Solr的命令表

Linux:

  • 普通solr命令:solr start -s /usr/local/hadoop/solr-5.3.1/server/solr
  • 啓動Solr Cloud指令:
    • bin/solr start -e cloud –noprompt

命令分析:Solr Cloud 測試樣例,會在 example下建立cloud目錄,而且建立兩個物理節點Node0一、Node02, gettingstarted是邏輯意義上的Solr Core, Solr Core經過分片包含2個備份json

Windows啓動Solr命令:solr start(默認參數啓動)windows

Windows關閉Solr命令:solr stop –all

Solr Admin UI查看Solr運行狀態:http://localhost:8983/solr/

SolrCloud 運行在2個節點,端口7574和端口8983,命令執行後默認自動建立的Solr Core: gettingstarted,gettingstarted由兩個shard組成,每一個shard存在2個replica,Solr的管理員界面Cloud Tab 很好的展現Collection

解釋:

  • SolrHome:Solr全部的索引數據集合
  • Gettingstarted:Solr Core名稱

索引數據

Solr服務器啓動、運行後不包含數據,Solr安裝目錄包含bin/post 工具,主要是幫助將各類類型的文檔在Solr啓動的時候導入Solr,這裏將Post工具用於索引下面的案例。須要在Solr的安裝目錄下使用命令shell運行案例。

注意:bin/post工具和windows 腳本徹底不同,可是內部調用的Java程序是可得到的,詳情請看:https://cwiki.apache.org/confluence/display/solr/Post+Tool#PostTool-Windows

索引rich 文件目錄

Rich是指HMTL/PDF/MSOffice/簡單文本,bin/post工具支持文件目錄處理(包含子目錄),而且將少許的內容導入Solr,便於查詢和索引,Solr安裝目錄包含doc的子目錄,能夠很方便的經過下面命令將文件導入到Solr索引庫:

bin/post -c gettingstarted docs/

命令參數詳解

  • -c gettingstarted:索引導入Solr Core的名稱
  • docs/:solr安裝目錄下doc目錄相對路徑

如今可索引存儲在gettingstarted的成千上萬的文件而且提交索引更新,用戶能夠經過Solr Admin UI的Query選項卡搜索「solr」關鍵字,在‘q’一行使用自定義的內容取代’*’,而後點擊」Execute Query」查詢相關信息

創建數據索引,從新運行導入索引命令:bin/post -c gettingstarted docs/後,從新導入同一個Collection索引數據會清空原先的數據以後纔會存入索引數據。

索引Solr xml

Solr支持索引各類格式的結構化內容,結構化內容數據能夠經過Solr XML格式導入Solr,經過Solr XML,solr索引工做者一般能夠編碼經過POST請求的形式直接去訪問Solr的/update的方法將必定範圍的內容寫入Solr。

Solr的安裝目錄包example目錄包含許多Solr XML格式文件,這些techproducts需特定的配置, bin/solr腳本包含支持配置,可經過bin/solr start –e 參數值,這種方式在啓動solr的同時建立Collection

bin/post: 索引在example/exanplesdocs目錄下的Solr XML文件:

測試命令:bin/post –c gettingstarted example/exampledocs/*.xml

將索引數據導入gettingstarted,如今可經過默認Solr Query語法進行搜索,注意你能夠經過http://localhost:8983/solr/gettingstarted/browse

瀏覽頁面顯示的索引的文檔儘管是粗糙、原型化、交互式的HTML視圖,可是/browse UI展現Solr技術能力(/browse視圖默認gettingstarted schema和數據格式默認結構化XML、JSON、CSV樣例數據和非結構化rich數據,數據多是首先不會非理想化顯示,可是能夠經過模板定製)

索引庫數據視圖

索引JSON:

Solr支持索引JSON數據:任意的結構化JSON或者相似Solr XML的「Solr JSON」,Solr example目錄包含Solr Json測試文件,使用bin/post,創建JSON 文件索引:

bin/post -c gettingstarted example/exampledocs/books.json

windows命令:java -Durl=http://localhost:8080/solr/collection/update -jar post.jar *.json

爲了扁平化(索引數據切割:相似Spark的RDD分割Partition)和索引任意的結構化JSON,能夠查看ansforming and Indexing Custom JSON data.

索引CSV文件:

CSV文件是將數據導入Solr一個比較好的方式,特別是當文檔是有相同一組的屬性時,CSV能夠很方便的從Excel或者從數據庫(例如mysql)中導出。當SOlr啓動時,能夠很容易將結構化數據導出爲CSV格式,而後將數據存入Solr,而不是須要額外的導入步驟

測試命令:bin/post -c gettingstarted example/exampledocs/books.csv

其餘的索引管理技術:

  • 經過Data Import Handler (DIH).從數據庫將數據導入Solr
  • 經過Solr的Java客戶端SolrJ管理索引
  • 經過Admin UI導入:Documents選項卡

更新數據:

注意到即便索引這個指南中的內容超過1次,solr也不會出現重複的結果,由於schema.xml文件指定了名爲「id」,「uniqueKey」域,不管何時使用POST命令以相同的uniqueKey提交文檔,solr會自動提替換(相似Map屬性,key相同的值老是會被最新的值替代),咱們能夠經過Solr Admin UI的Overview視圖的num Docs和Max Doc屬性驗證這個過程:

Num Docs:表示可檢索的文檔數量(可能大於XML\JSON\CSV文件的總和,由於一些rich 文件可能包含多個文件:例如Work文檔裏面內嵌文檔)

Max Docs:可能比Num Docs更大,由於Max Docs包含邏輯上已刪除可是物理還未從索引刪除的文檔

注意:可能每次咱們使用post命令重複提交索引,可是Num Docs並未增加,多是uniquekey相同時新索引取代舊索引,形成索引內容可能改變但數量不變,能夠經過提交同一個樣本文件,可是每次提交前修改內容,經過相同的id查詢會獲得不一樣的結果

刪除數據:

可經過更新URL經過提交delete命令,而且指定文檔的uniquekey域或設置查詢條件去刪除索引數據 測試命令:

bin/post -c gettingstarted -d "<delete><id>SP2514N</id></delete>"

驗證:經過Solr Admin UI的Query Tab q欄輸入:id:」key」去驗證索引數據是否真正刪除

搜索:

Solr查詢可經過REST客戶端、CURL、wget、Chrome POSTMAN等方式,能夠爲許多編程語言提供相似本地客戶端的體驗,Solr Admin UI包含一個solr查詢接口:能夠看Sorl Admin UI的query Tab,若是不設置篩選條件點擊「Execute Query「按鈕,將會獲取默認的10條JSON格式的索引記錄

Solr查詢表達式:」域名」:」域值」:*:*表示匹配全部的數據

Solr默認查詢10條數據由「start,rows「欄的rows指定,提供分頁效果

Solr Admin UI訪問的URL在結果窗口的頂端呈現灰色的效果,點擊以後將會顯示Solr的響應數據,也可使用curl命令行:

curl "http://localhost:8983/solr/gettingstarted/select?q=\*%3A*&wt=json&indent=true"

URL參數解釋:

  • q:query:查詢條件:URL-encod編碼
  • wt:solr相應內容的輸出格式
  • indent:內容是否切割:主要讓solr響應內容格式化顯示,不然非格式化顯示,所有堆在一塊兒不美觀

查詢基礎:

  1. 單一條件限定查詢 單一條件查詢主要設置「q「參數,用實際的域值替換「:」,例如搜索「foundation」,使用curl指令:
curl http://localhost:8983/solr/gettingstarted/select?wt=json&indent=true&q=foundation

Solr頁面顯示:

  1. 短語搜索:通俗點就是關鍵字組合查詢 測試案例:
curl "http://localhost:8983/solr/gettingstarted/select?wt=json&indent=true&q=\"CAS+latency\""

Sor結果頁面:

  1. 聯合查詢

默認使用多關鍵字或短語查詢時,solr僅僅要求匹配的文檔中存在,結果列表中包含關鍵字越多的信息按順序顯示,用戶能夠要求一個關鍵字以「+「或」-「做爲前綴。查詢的關鍵字包含「one」和「three」,能夠經過「+」進行鏈接,可是URL中會使用URL Encoder進行轉碼傳輸 案例:

curl "http://localhost:8983/solr/gettingstarted/select?wt=json&indent=true&q=%2Bone+%2Bthree"

更多的Solr的query可參考:https://cwiki.apache.org/confluence/display/solr/Searching

Solr Faceting:垂直搜索

Solr最受歡迎的功能是Faceting,Faceting運行搜索結果歸檔爲子集/Buckets/Categories,而且提供每一個子集的數量,Faceting的種類:filed values, numeric and date ranges, pivots (decision tree), and arbitrary query faceting.

Faceting: 對已經搜索出來的結果進一步的切分,例如汽車搜索,solr應該顯示所有的包含汽車字樣,可是能夠經過faceting將汽車劃分爲卡車、轎車等類型,用戶能夠直接點擊對應的汽車類型獲得對應的結果,也能夠查看卡車對應的數量統計等,Facating實際上至關於一個內容過濾的角色

Field facets

Solr能夠提供搜索結果,Solr facets能夠經過查詢返回搜索文檔的數量,每一個文檔在結果集包含惟一的關鍵字,在Solr Admin UI選項卡,能夠選中「facet」複選框,能夠看到和faceted相關的可選參數

分析:相似搜索「電腦」,solr返回電腦分類:例如聯想商品數量:100,惠普電腦250狀況,還能夠經過時間等維度進行搜索

Range Facets:

對於數字和日期常常描述facet數據在某個範圍,而不是分離實際值,通俗說就是在某個區間範圍內搜索結果,例如淘寶的商品價格、日期等方位搜索

測試案例:

curl http://localhost:8983/solr/gettingstarted/select?q=*:*&wt=json&indent=on&rows=0&facet=true&facet.range=price&f.price.facet.range.start=0&f.price.facet.range.end=600&f.price.facet.range.gap=50&facet.range.other=after

Pivot Facets:

Priot Facets相似決策樹,容許兩個或以上的fields組合查詢,測試案例

curl http://localhost:8983/solr/gettingstarted/select?q=*:*&rows=0&wt=json&indent=on&facet=on&facet.pivot=cat,inStock

結果說明:book類的關於Cat的書,仍在賣的有12本,沒有在賣的有2本

Spatial

Solr支持位置限制支持,在指定的位置的距離範圍內搜素,結果並按照距離排序,甚至能夠經過距離改善結果,相似如今的LBS服務。測試數據目錄:

example/exampledocs/*.xml,文件包含有表面Spatial能力表述的定位信息,運行測試,測試方法查看:techproducts example section,Spatial查詢能夠和其餘類型的查詢緩和使用,例如查詢距離舊金山「ipod」的關鍵字: http://localhost:8983/solr/techproducts/browse?q=ipod&pt=37.7752%2C-122.4232&d=10&sfield=store&fq=%7B%21bbox%7D&queryOpts=spatial&queryOpts=spatial

Spatial:對匹配的結果進一步的篩選,結果更精確

總結:

經過Solr入門指南應瞭解:

  • 在SolrClund模式下啓動Solr
  • 索引富文本文件/XML文件/JSON文件/CSV文件
  • 打開Solr Admin控制檯,使用查詢接口獲取JSON個數的輸出結果
  • 打開/browse接口以更加友好的方式和熟悉的接口展現Solr顯示Solr的功能

下面是開始Solr入門指南的關鍵指令:linux/unix腳本

bin/solr start -e cloud -noprompt ;
  open http://localhost:8983/solr ;
  bin/post -c gettingstarted docs/ ;
  open http://localhost:8983/solr/gettingstarted/browse ;
  bin/post -c gettingstarted example/exampledocs/*.xml ;
  bin/post -c gettingstarted example/exampledocs/books.json ;
  bin/post -c gettingstarted example/exampledocs/books.csv ;
  bin/post -c gettingstarted -d "<delete><id>SP2514N</id></delete>" ;
  bin/solr healthcheck -c gettingstarted ;

注意:gettingstarted是solr core的名稱須要手動建立而後導入

清理: 中止Solr和恢復Solr爲初始狀態,可以使用下面的指令

bin/solr stop -all ;   //關閉solar
rm -Rf example/cloud/  /刪除Solr的數據文件
相關文章
相關標籤/搜索