前言
最近在研究搜索引擎,準備搭建一套屬于自己的搜索APP,用于搜索的數據我已通過scrapy抓到本地了,現在需要一個搜索引擎來跑這些數據.于是選擇了基于Lucene的solr來為我做搜索引擎的工作.時至今日最新版的solr為6.5.1,話不多說,開始干吧~
目錄
1.solr簡介
2.solr環境搭建
3.solr相關命令
4.solr索引查詢
1.solr簡介
solr 名稱來源
Search On Lucene Replication
solr 基本概況
Apache Solr (讀音: SOLer) 是一個開源的搜索服務器。Solr 使用 Java 語言開發,主要基于 HTTP 和 Apache Lucene 實現。Apache Solr 中存儲的資源是以 Document 為對象進行存儲的。每個文檔由一系列的 Field 構成,每個 Field 表示資源的一個屬性。Solr 中的每個 Document 需要有能唯一標識其自身的屬性,默認情況下這個屬性的名字是 id,在 Schema 配置文件中使用:id進行描述。
Solr是一個高性能,采用Java開發,基于Lucene的全文搜索服務器。文檔通過Http利用XML加到一個搜索集合中。查詢該集合也是通過 http收到一個XML/JSON響應來實現。它的主要特性包括:高效、靈活的緩存功能,垂直搜索功能,高亮顯示搜索結果,通過索引復制來提高可用性,提 供一套強大Data Schema來定義字段,類型和設置文本分析,提供基于Web的管理界面等。
2.solr環境搭建
環境準備:
1.Ubuntu 16.04 LTS
http://releases.ubuntu.com/16.04/
2.Java JDK 1.8.0
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
3.Solr 6.5.1
http://www.apache.org/dyn/closer.lua/lucene/solr/6.5.1
安裝/配置solr:
1、將下載下來的solr-6.5.1.tgz解壓
2、在*\下新建文件夾solr_home
3、在solr_home中新建文件夾solr_core
4、從solr-6.5.1\solr\server\solr下的三個文件copy到solr_home中
5、將\solr-6.5.1\solr\server\solr\configsets\basic_configs下的conf文件夾copy到solr_home\solr_core中
啟動solr
在solr解壓目錄運行:
bin/solr start
Solr的默認web管理頁面地址為
http://localhost:8983
3.Solr相關命令
查看幫助
bin/solr -help
啟動start
bin/solr start -help 查看start幫助
bin/solr start 在默認端口啟動
bin/solr start -f 前臺啟動
bin/solr start -p 8984 指定端口啟動
bin/solr start -cloud 啟動分布式版本
bin/solr start -e cloud -noprompt -e表示要啟動一個現有的例子,例子名稱是cloud,cloud這個例子是以SolrCloud方式啟動的
bin/solr restart 重啟項目
新建 core
bin/solr create -c abc 創建一個名為<abc>的core
post提交數據生成索引
bin/post -c abc docs/ 向名為<abc>的core或collection提交數據,數據源在<docs/>目錄中
刪除
bin/solr delete -c abc 刪除一個名為<abc>的core或collection
刪除索引
bin/post -c abc -d "<delete><query>*:*</query></delete>" 刪除<abc>core的所有數據
bin/post -c abc -d "data to be deleted" 在<data to be deleted>處填寫你想要刪除的數據
停止solr
bin/solr stop -all 停止所有端口
bin/solr stop -p 8080 停止<8080>端口
狀態
bin/solr status 查看當前運行的所有solr端口
當然了,有一些命令在solr的web管理界面也能實現,不管是黑貓白貓,只要能抓耗子的貓就是好貓.
4.solr索引查詢
一.基本查詢
q 查詢的關鍵字,此參數最為重要,例如,q=id:1,默認為q=*:*,
fl 指定返回哪些字段,用逗號或空格分隔,注意:字段區分大小寫,例如,fl= id,title,sort
start 返回結果的第幾條記錄開始,一般分頁用,默認0開始
rows 指定返回結果最多有多少條記錄,默認值為 10,配合start實現分頁
sort 排序方式,例如id desc 表示按照 “id” 降序
wt (writer type)指定輸出格式,有 xml, json, PHP等
fq (filter query)過慮查詢,提供一個可選的篩選器查詢。返回在q查詢符合結果中同時符合的fq條件的查詢結果,例如:q=id:1&fq=sort:[1 TO 5],找關鍵字id為1 的,并且sort是1到5之間的。
df 默認的查詢字段,一般默認指定。
qt (query type)指定那個類型來處理查詢請求,一般不用指定,默認是standard。
indent 返回的結果是否縮進,默認關閉,用 indent=true|on 開啟,一般調試json,php,phps,ruby輸出才有必要用這個參數。
version 查詢語法的版本,建議不使用它,由服務器指定默認值。
二. Solr的檢索運算符
“:” 指定字段查指定值,如返回所有值*:*
“?” 表示單個任意字符的通配
“*” 表示多個任意字符的通配(不能在檢索的項開始使用*或者?符號)
“~” 表示模糊檢索,如檢索拼寫類似于”roam”的項這樣寫:roam~將找到形如foam和roams的單詞;roam~0.8,檢索返回相似度在0.8以上的記錄。
AND、|| 布爾操作符
OR、&& 布爾操作符
NOT、!、-(排除操作符不能單獨與項使用構成查詢)
“+” 存在操作符,要求符號”+”后的項必須在文檔相應的域中存在2
( ) 用于構成子查詢
[] 包含范圍檢索,如檢索某時間段記錄,包含頭尾,date:[201507 TO 201510]
{} 不包含范圍檢索,如檢索某時間段記錄,不包含頭尾date:{201507 TO 201510}
相關推薦:
Windows10下淺識Luke索引
scrapy通過scrapyinghub實現24小時爬蟲托管爬取
參考鏈接:
http://lucene.apache.org/solr/quickstart.html
http://blog.csdn.net/matthewei6/article/details/50620600