Solr與配置IK分詞器、SolrJ

一、Solr介紹

? ? 1.簡介:Solr是基于Lucene的面向企業(yè)搜索的web應用悲立,Sole是一個獨立的企業(yè)級搜索應用服務器鹿寨,高性能,采用java5開發(fā)薪夕,Solr是由兩個部分構成:Solr的web服務和Solr的索引庫

Solr簡介

? ? 2.Lucene:Lucene是一個高效的脚草,基于java的全文檢索庫

Lucene

? ? 3.全文檢索的概念:全文數據庫是全文檢索系統(tǒng)的主要構成部分。所謂全文數據庫是將一個完整的信息源的全部內容轉化為計算機可以識別原献、處理的信息單元而形成的數據集合馏慨。全文數據庫不僅存儲了信息,而且還有對全文數據進行詞姑隅、字写隶、段落等更深層次的編輯、加工的功能讲仰,而且所有全文數據庫無一不是海量信息數據庫慕趴。

全文檢索的概念

二、在Centos上安裝Solr單機版

????1.安裝環(huán)境鄙陡,JDK冕房、tomcat的配置

????2.解壓solr的安裝包

解壓solr的安裝包

????3.進入解壓好的solr,進入example/webapps柔吼,將solr.war拷貝到tomcat的webapp

將solr.war拷貝到tomcat的webapp
查看拷貝結果

????4.啟動tomcat毒费,會自動將war包解壓

啟動容器
啟動后的webapp目錄

????5.添加服務中所依賴的jar包,注意要先把tomcat/webapp下的solr.war刪除

添加依賴

刪除原來的solr.war
拷貝所有的依賴

????????這時solr的服務已經安裝完畢了


接下來安裝索引庫

????1.創(chuàng)建索引庫愈魏,將solr解壓目錄下的/example/solr拷貝到索引庫中

創(chuàng)建一個目錄作為索引庫
將解壓文件中的solrCore拷貝到創(chuàng)建的目錄

????2.在solr的服務中配置索引庫

在solr的服務中配置索引庫(即服務器容器中)
配置信息

????3.測試訪問

測試訪問

三觅玻、Solr管理界面介紹

????Dashboard:儀表盤,訪問http://solr服務器Ip:端口/solr服務主目錄培漏,可以看到

主界面
儀表盤

????Logging:日志溪厘,顯示solr運行出現(xiàn)的異常或錯誤牌柄、警告等各種信息

Logging

????Core??? Admin:(core管理)核心管理

????????主要有Add?? Core(添加核心)畸悬,Unload(卸載核心),Rename(重命名核心),Reload(重新加載核心),Optimize(優(yōu)化索引庫)

????????Add Core是添加core:主要是在instanceDir對應的文件夾里生成一個core.properties文件

????????name:給 core 起的名字珊佣;

????????instanceDir:與我們在配置solr 到 tomcat 里時的 solr_home 里新建的 core 文件夾名一致蹋宦;?

????????dataDir:確認 AddCore 時,會在 new_core 目錄下生成名為 data的文件夾? config:new_core 下的 conf 下的config 配置文件(solrconfig.xml)?

????????schema: new_core 下的 conf 下的 schema 文件(schema.xml)

Core??? Admin

????Java????Properties:可以查看到java相關的一些屬性的信息

Java????Properties

? ??Thread? Dump:查看每個線程的詳細信息咒锻,以及狀態(tài)信息

Thread? Dump

Core Selecter(core選擇器):選擇solrCore

Core Selecter

? ??Overview:包含基本統(tǒng)計如當前文檔數冷冗;和實例信息如當前核心的配置目錄

Overview

? ??Analysis:檢驗分詞效果

Analysis

? ??Documents :(索引文檔)索引的相關操作,如:增加惑艇,修改蒿辙,刪除等

????????在如下頁面拇泛,選擇/update ,文檔格式選擇 json 思灌,然后 submit 提交俺叭。這樣 索引就增 加上了。修改與增加一樣泰偿,都是/update ,刪除為/delete 熄守。 成功之后,我們去 query 里查詢數據 就能查到我們剛添加的數據.

Documents?

? ??Files:solr_home 下的 core 下的 conf 下的相關文件,可單擊查看里面的內容

Files

? ??Ping:查看當前核心庫還是否工作的以及響應時間

Ping

Plugins /stats:Solr 自帶的一些插件以及我們安裝的插件的信息以及統(tǒng)計

Plugins /stats

? ??Query:查詢的結果要顯示哪個字段,就得將schema.xml 文件配置字段時的 stored 屬性設為true

Query

? ??Request-Handler(qt): 請求處理器(不重要,并非詳細就重要)

????????q: 查詢字符串(必須的)甜奄。:表示查詢所有柠横;keyword:尚學堂 表示按關鍵字“尚學堂” 查詢?

????????fq: filter query 過濾查詢窃款。使用 Filter Query 可以充分利用 Filter Query Cache课兄,提高檢索 性能。作用:在 q 查詢符合結果中同時是 fq 查詢符合的(類似求交集)晨继,例如: q=mm&fq=date_time:[20081001 TO 20091031]烟阐,找關鍵字 mm,并且 date_time 是 20081001 到 20091031 之間的紊扬。?

????????sort: 排序蜒茄。格式如下:字段名 排序方式;如 id desc 表示按 id 字段降序排列查詢結果餐屎。?

????????start,rows:表示查回結果從第幾條數據開始顯示檀葛,共顯示多少條。?

????????fl: field list腹缩。指定查詢結果返回哪些字段屿聋。多個時以空格“ ”或逗號“,”分隔。不指 定時藏鹊,默認全返回润讥。?

????????df: default field 默認的查詢字段,一般默認指定盘寡。?

????????Raw Query Parameters:? 原始查詢參數的

????????wt: write type楚殿。指定查詢輸出結果格式,我們常用的有 json 格式與 xml 格式竿痰。在 solrconfig.xml 中定義了查詢輸出格式:xml脆粥、json、python影涉、ruby变隔、php、csv常潮。?

????????indent: 返回的結果是否縮進弟胀,默認關閉,用 indent=true | on 開啟,一般調試 json,php,phps,ruby 輸出才有必要用這個參數孵户。?

????????debugQuery: 設置返回結果是否顯示 Debug 信息萧朝。?

????????hl: high light 高亮。hl=true 表示啟用高亮? ? ?

????????hl.fl : 用空格或逗號隔開的字段列表(指定高亮的字段)夏哭。要啟用某個字段的 highlight 功能检柬,就得保證該字段在 schema 中是 stored。? ? ?

????????hl.simple.pre: 設置高亮顯示的 html 標記的開始標記 hl.simple.post:設置高亮顯示的 html 標記的結束標記? ?

????????hl.requireFieldMatch: 如果置為 true竖配,除非該字段的查詢結果不為空才會被高亮何址。它 的默認值是 false,意味 著它可能匹配某個字段卻高亮一個不同的字段进胯。如果 hl.fl 使用了通 配符用爪,那么就要啟用該參數。盡管如此胁镐,如果你的查詢是 all 字段(可能是使用 copy-field 指 令)偎血,那么還是把它設為 false,這樣搜索結果能表明哪個字段的查詢文本未被找到? ? ?

????????hl.usePhraseHighlighter:如果一個查詢中含有短語(引號框起來的)那么會保證一 定要完全匹配短語的才會被高亮盯漂。? ? ?

????????hl.highlightMultiTerm:如果使用通配符和模糊搜索颇玷,那么會確保與通配符匹配的 term 會高亮。默認為 false就缆,同時

????????hl.usePhraseHighlighter 要為 true帖渠。?

????????facet:分組統(tǒng)計,在搜索關鍵字的同時,能夠按照 Facet 的字段進行分組并統(tǒng)計竭宰。? ? ?

????????facet.query:Facet Query 利用類似于 filter query 的語法提供了更為靈活的 Facet.通 過 facet.query 參數空郊,可以對任意字段進行篩選。? ? ?

????????facet.field:需要分組統(tǒng)計的字段羞延,可以多個渣淳。? ? ?

????????facet.prefix:表示Facet 字段值的前綴。比如 facet.field=cpu&facet.prefix=Intel伴箩, 那么對 cpu 字段進行 Facet 查詢入愧,返回的 cpu 都是以 Intel 開頭的, AMD 開頭的 cpu 型號將 不會被統(tǒng)計在內嗤谚。?

????????spatial: spellcheck: 拼寫檢查


????Replication:顯示你當前 Core 的副本棺蛛,并提供disable/enable 功能

Replication

? ??Schema:展示該 Core 的shema.xml 文件中的內容

Schema

三、Solr索引庫目錄結構

????1.Solr.xml:配置solr集群

????2.collection1:索引庫巩步,solr core

????3.core.properties:設置索引庫的名稱

????4.data:存放索引

????5.conf:索引庫的配置目錄

????????5.1schema.xml:配置字段以及字段類型


Solr索引庫—schema.xml詳解

? ? ? ??schema.xml:是用來定義索引數據中的域的旁赊,包括域名稱,域類型椅野,域是否索引终畅,分詞籍胯,是否存儲等等

????<field>:定義“域”,(關系型數據庫的字段)

定義“域”

????<fieldType name="string" class="solr.StrField" sortMissingLast="true" /> Name:域類型的名稱离福,

定義域的類型

????<copyField>:復制域杖狼,可實現(xiàn)更新和查詢分離(也可實現(xiàn)多個查詢域合一查詢)

????<copyField source="item_title" dest="item_keywords"/>

????????Source:源域

????????Dest:目標域

定義復制域

四、Solr的索引機制

????Solr的索引機制分為:正排索引(正向索引)和倒排索引(反向索引)

????????正排索引:是以文檔的ID為關鍵字妖爷,索引文檔中每個字的位置信息蝶涩,查找時掃描索引中每個文檔中字的信息知道找出所有包含查詢關鍵字的文檔,檢索效率低

正排索引

????????倒排索引:對數據進行分析絮识,抽取出數據中詞條绿聘,以詞條作為key,對應數據的存儲位置作為value次舌,實現(xiàn)索引的存儲熄攘,這種索引稱為倒排索引

????????當Solr存儲文檔時,solr會首先對文檔數據進行分詞垃它,創(chuàng)建索引庫和文檔數據庫

????????分詞是指:將一段字符文本按照一定的規(guī)則分成若干個單詞

倒排索引

或者參考:插畫理解Elasticsearch(原標題:終于有人把Elasticsearch原理講透了O势痢)


五烹看、配置中文分詞器IK Analyzer

????當我們在solr中存儲中文信息時国拇,IK Analyzer 會智能對中文字、詞惯殊、組進行分詞反向索引酱吝,由于Solr的開發(fā)者是歪果仁,所以需要另外的中文分詞插件

????????1.下載中文分詞器并解壓

解壓
解壓2

????????2.在solr服務的WEB-INF目錄下創(chuàng)建classes目錄(默認是沒有的)土思,并將中文分詞器的配置文件拷貝到classes目錄

????????3.依賴的jar包放到solr/WEB-INF/lib/目錄下

添加依賴

????????4.在/usr/local/solrhome/solr/collertion1/conf/schema.xml中配置中文分詞器

配置

使用插件后的中文分詞

使用插件后的中文分詞

六务热、SolrJ

????1.簡介:SolrJ是訪問Solr服務的Java客戶端,提供索引和搜索的請求方法己儒,SolrJ通常嵌入在業(yè)務系統(tǒng)中崎岂,通過solr的API接口操作和Solr服務,單獨使用時還需要導入commons-logging

簡介

????通過SolrJ向索引庫中添加文檔

????????1.創(chuàng)建maven項目闪湾,在pom.xml中添加SolrJ的依賴

pom.xml

????????2.編寫測試類冲甘,創(chuàng)建solrj的連接對象,創(chuàng)建solr的文檔對象途样,將文檔添加到solr的索引庫中

編寫測試

????????3.提交事務江醇,查看solrCore

查看結果

? ??通過SolrJ查詢索引庫中的文檔

????????1.創(chuàng)建solrj的連接對象

????????2.創(chuàng)建查詢條件

????????3.設置分頁條件

????????4.執(zhí)行查詢,獲取查詢結果

測試類

????????5.遍歷結果,執(zhí)行測試

結果

????通過SolrJ刪除索引庫中的文檔

????????1.編寫測試類何暇,創(chuàng)建連接對象

????????2.設置刪除格式

代碼

????????3.事務提交陶夜,查看solrCore

Solr索引庫結果

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市裆站,隨后出現(xiàn)的幾起案子条辟,更是在濱河造成了極大的恐慌黔夭,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件羽嫡,死亡現(xiàn)場離奇詭異纠修,居然都是意外死亡,警方通過查閱死者的電腦和手機厂僧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門扣草,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颜屠,你說我怎么就攤上這事辰妙。” “怎么了甫窟?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵密浑,是天一觀的道長。 經常有香客問我粗井,道長尔破,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任浇衬,我火速辦了婚禮懒构,結果婚禮上,老公的妹妹穿的比我還像新娘耘擂。我一直安慰自己胆剧,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布醉冤。 她就那樣靜靜地躺著秩霍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚁阳。 梳的紋絲不亂的頭發(fā)上铃绒,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音螺捐,去河邊找鬼颠悬。 笑死,一個胖子當著我的面吹牛归粉,可吹牛的內容都是我干的椿疗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼糠悼,長吁一口氣:“原來是場噩夢啊……” “哼届榄!你這毒婦竟也來了?” 一聲冷哼從身側響起倔喂,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤铝条,失蹤者是張志新(化名)和其女友劉穎靖苇,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體班缰,經...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡贤壁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了埠忘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脾拆。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖莹妒,靈堂內的尸體忽然破棺而出名船,到底是詐尸還是另有隱情,我是刑警寧澤旨怠,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布渠驼,位于F島的核電站,受9級特大地震影響鉴腻,放射性物質發(fā)生泄漏迷扇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一爽哎、第九天 我趴在偏房一處隱蔽的房頂上張望蜓席。 院中可真熱鬧,春花似錦倦青、人聲如沸瓮床。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至踢步,卻和暖如春癣亚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背获印。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工述雾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人兼丰。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓玻孟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鳍征。 傳聞我的和親對象是個殘疾皇子黍翎,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內容