Lucene

一、Lucene概述

1义黎、Lucene簡(jiǎn)介
Lucene是apache下的一個(gè)開(kāi)源的全文檢索引擎工具包诉瓦。

2、 全文檢索(Full-text Search)

定義

全文檢索就是先“分詞”創(chuàng)建索引漱挎,再執(zhí)行搜索的過(guò)程系枪。

分詞:就是將一段文字分成一個(gè)個(gè)單詞
全文檢索就將一段文字分成一個(gè)個(gè)單詞去查詢(xún)數(shù)據(jù)!?牧隆私爷!

應(yīng)用場(chǎng)景

(1)搜索引擎(了解)
搜索引擎是一個(gè)基于全文檢索雾棺、能獨(dú)立運(yùn)行、提供搜索服務(wù)的軟件系統(tǒng)衬浑。

(2)電商站內(nèi)搜索(重點(diǎn))
思考:電商網(wǎng)站內(nèi)捌浩,我們都是通過(guò)輸入關(guān)鍵詞來(lái)搜索商品的。如果我們根據(jù)關(guān)鍵詞工秩,直接查詢(xún)數(shù)據(jù)庫(kù)尸饺,會(huì)有什么后果?
答:我們只能使用模糊搜索助币,來(lái)進(jìn)行匹配浪听,會(huì)導(dǎo)致很多數(shù)據(jù)匹配不到。所以眉菱,我們必須使用全文檢索馋辈。

二、Lucene實(shí)現(xiàn)全文檢索的流程


image.png

全文檢索的流程分為兩大部分:索引流程倍谜、搜索流程迈螟。
索引流程:采集數(shù)據(jù)--->構(gòu)建文檔對(duì)象--->創(chuàng)建索引(將文檔寫(xiě)入索引庫(kù))。
搜索流程:創(chuàng)建查詢(xún)--->執(zhí)行搜索--->渲染搜索結(jié)果尔崔。

三答毫、配置步驟說(shuō)明

(1)搭建環(huán)境(先下載Lucene)
1、下載Lucene
Lucene是開(kāi)發(fā)全文檢索功能的工具包季春,使用時(shí)從官方網(wǎng)站下載洗搂,并解壓。
官方網(wǎng)站:http://lucene.apache.org/
下載地址:http://archive.apache.org/dist/lucene/java/
2载弄、創(chuàng)建項(xiàng)目耘拇,導(dǎo)入包
mysql5.1驅(qū)動(dòng)包:mysql-connector-java-5.1.7-bin.jar
核心包:lucene-core-4.10.3.jar
分析器通用包:lucene-analyzers-common-4.10.3.jar
查詢(xún)解析器包:lucene-queryparser-4.10.3.jar

(2)創(chuàng)建索引庫(kù)
1.采集數(shù)據(jù)
2.將數(shù)據(jù)轉(zhuǎn)換成Lucene文檔
3.將文檔寫(xiě)入索引庫(kù),創(chuàng)建索引
(具體代碼不在此寫(xiě)出)

(3)搜索索引庫(kù)
(具體代碼不在此寫(xiě)出)

四宇攻、分詞

(1) 重要性

分詞是全文檢索的核心惫叛。
所謂的分詞,就是將一段文本逞刷,根據(jù)一定的規(guī)則嘉涌,拆分成一個(gè)一個(gè)詞。
Lucene是根據(jù)分析器實(shí)現(xiàn)分詞的夸浅。針對(duì)不同的語(yǔ)言提供了不同的分析器仑最。并且提供了一個(gè)通用的標(biāo)準(zhǔn)分析器StandardAnalyzer

(2)Lucene分詞的過(guò)程

分詞的時(shí)候,是以域?yàn)閱挝坏姆2煌挠蚓剑嗷オ?dú)立。
同一個(gè)域中坯钦,拆分出來(lái)相同的詞预皇,視為同一個(gè)詞(Term)
不同的域中侈玄,拆分出來(lái)相同的詞,不是同一個(gè)詞深啤。
其中拗馒,Term是Lucene最小的語(yǔ)匯單元,不可再細(xì)分溯街。
分詞的時(shí)候經(jīng)歷了一系列的過(guò)濾器诱桂。如大小寫(xiě)轉(zhuǎn)換、去除停用詞等呈昔。

(3)分詞后索引庫(kù)結(jié)構(gòu)
索引庫(kù)中有兩個(gè)區(qū)域:索引區(qū)挥等、文檔區(qū)。
文檔區(qū)存放的是文檔堤尾。Lucene給每一個(gè)文檔自動(dòng)加上一個(gè)文檔編號(hào)docID肝劲。
索引區(qū)存放的是索引。注意:
索引是以域?yàn)閱挝坏墓Γ煌挠虼腔保舜讼嗷オ?dú)立。
索引是根據(jù)分詞規(guī)則創(chuàng)建出來(lái)的粘室,根據(jù)索引就能找到對(duì)應(yīng)的文檔榄檬。

五、Field域
(1)三大屬性

1.是否分詞(tokenized)

只有設(shè)置了分詞屬性為true衔统,lucene才會(huì)對(duì)這個(gè)域進(jìn)行分詞處理鹿榜。
在實(shí)際的開(kāi)發(fā)中,有一些字段是不需要分詞的锦爵,比如商品id舱殿,商品圖片等。
而有一些字段是必須分詞的险掀,比如商品名稱(chēng)沪袭,描述信息等。

  1. 是否索引(indexed)

只有設(shè)置了索引屬性為true迷郑,lucene才為這個(gè)域的Term詞創(chuàng)建索引枝恋。
在實(shí)際的開(kāi)發(fā)中,有一些字段是不需要?jiǎng)?chuàng)建索引的嗡害,比如商品的圖片等。我們只需要對(duì)參與搜索的字段做索引處理畦攘。

3.是否存儲(chǔ)(stored)

只有設(shè)置了存儲(chǔ)屬性為true霸妹,在查找的時(shí)候,才能從文檔中獲取這個(gè)域的值知押。
在實(shí)際開(kāi)發(fā)中叹螟,有一些字段是不需要存儲(chǔ)的鹃骂。比如:商品的描述信息。
因?yàn)樯唐访枋鲂畔照溃ǔ6际谴笪谋緮?shù)據(jù)畏线,讀的時(shí)候會(huì)造成巨大的IO開(kāi)銷(xiāo)。而描述信息是不需要經(jīng)常查詢(xún)的字段良价,這樣的話(huà)就白白浪費(fèi)了cpu的資源了寝殴。
因此,像這種不需要經(jīng)常查詢(xún)明垢,又是大文本的字段蚣常,通常不會(huì)存儲(chǔ)到索引庫(kù)。

(2)特點(diǎn)

三大屬性彼此獨(dú)立痊银。
通常分詞是為了創(chuàng)建索引抵蚊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市溯革,隨后出現(xiàn)的幾起案子贞绳,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異捐川,居然都是意外死亡匾南,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)阔墩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事躺酒。” “怎么了蔑歌?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵羹应,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我次屠,道長(zhǎng)园匹,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任劫灶,我火速辦了婚禮裸违,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘本昏。我一直安慰自己供汛,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著怔昨,像睡著了一般雀久。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上趁舀,一...
    開(kāi)封第一講書(shū)人閱讀 51,146評(píng)論 1 297
  • 那天赖捌,我揣著相機(jī)與錄音,去河邊找鬼矮烹。 笑死越庇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的擂送。 我是一名探鬼主播悦荒,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嘹吨!你這毒婦竟也來(lái)了搬味?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蟀拷,失蹤者是張志新(化名)和其女友劉穎碰纬,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體问芬,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悦析,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了此衅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片强戴。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挡鞍,靈堂內(nèi)的尸體忽然破棺而出骑歹,到底是詐尸還是另有隱情,我是刑警寧澤墨微,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布道媚,位于F島的核電站,受9級(jí)特大地震影響翘县,放射性物質(zhì)發(fā)生泄漏最域。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一锈麸、第九天 我趴在偏房一處隱蔽的房頂上張望镀脂。 院中可真熱鬧,春花似錦忘伞、人聲如沸狗热。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)匿刮。三九已至,卻和暖如春探颈,著一層夾襖步出監(jiān)牢的瞬間熟丸,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工伪节, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留光羞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓怀大,卻偏偏與公主長(zhǎng)得像纱兑,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子化借,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353