2019-08-08

定義

Lucene是一個(gè)成熟的窟勃、高性能的、可擴(kuò)展的逗堵、輕量級(jí)的秉氧,而且功能強(qiáng)大的搜索引擎包。Lucene的核心jar包只有一個(gè)文件蜒秤,而且不依賴任何第三方j(luò)ar包谬运。更重要的是,它提供的索引數(shù)據(jù)和檢索數(shù)據(jù)的功能開箱即用垦藏。當(dāng)然梆暖,Lucene也提供了多語(yǔ)言支持,具有拼寫檢查掂骏、高亮等功能轰驳。

?架構(gòu) 術(shù)語(yǔ)? Lucene中的術(shù)語(yǔ)和 < 存儲(chǔ)

Apache Lucene把所有的信息都寫入到一個(gè)稱為倒排索引的數(shù)據(jù)結(jié)構(gòu)中,倒排索引的介紹可以參考 < 數(shù)據(jù)分析

學(xué)習(xí)ES初期弟灼,我經(jīng)臣督猓考慮的問(wèn)題是,傳入到Document中的數(shù)據(jù)是如何轉(zhuǎn)變成倒排索引的田绑?查詢語(yǔ)句是如何轉(zhuǎn)換成一個(gè)個(gè)Term使高效率文本搜索變得可行勤哗?這種轉(zhuǎn)換數(shù)據(jù)的過(guò)程就稱為文本分析(analysis)

文本分析工作由analyzer組件負(fù)責(zé)。analyzer由一個(gè)分詞器(tokenizer)和0個(gè)或者多個(gè)過(guò)濾器(filter)組成,也可能會(huì)有0個(gè)或者多個(gè)字符映射器(character mappers)組成掩驱。

Lucene中的tokenizer用來(lái)把文本拆分成一個(gè)個(gè)的Token芒划。Token包含了比較多的信息,比如Term在文本的中的位置及Term原始文本欧穴,以及Term的長(zhǎng)度民逼。文本經(jīng)過(guò)tokenizer處理后的結(jié)果稱為token stream。token stream其實(shí)就是一個(gè)個(gè)Token的順序排列涮帘。token stream將等待著filter來(lái)處理拼苍。

除了tokenizer外,Lucene的另一個(gè)重要組成部分就是filter鏈调缨,filter鏈將用來(lái)處理Token Stream中的每一個(gè)token疮鲫。這些處理方式包括刪除Token,改變Token,甚至添加新的Token弦叶。Lucene中內(nèi)置了許多filter俊犯,讀者也可以輕松地自己實(shí)現(xiàn)一個(gè)filter。有如下內(nèi)置的filter:

Lowercase filter:把所有token中的字符都變成小寫

ASCII folding filter:去除tonken中非ASCII碼的部分

Synonyms filter:根據(jù)同義詞替換規(guī)則替換相應(yīng)的token

Multiple language-stemming

filters:把Token(實(shí)際上是Token的文本內(nèi)容)轉(zhuǎn)化成詞根或者詞干的形式湾蔓。

所以通過(guò)Filter可以讓analyzer有幾乎無(wú)限的處理能力:因?yàn)樾碌男枨筇砑有碌腇ilter就可以了瘫析。

?索引和查詢

索引過(guò)程:Lucene用用戶指定好的analyzer解析用戶添加的Document。當(dāng)然Document中不同的Field可以指定不同的analyzer。如果用戶的Document中有title和description兩個(gè)Field贬循,那么這兩個(gè)Field可以指定不同的analyzer咸包。

搜索過(guò)程:用戶的輸入查詢語(yǔ)句將被選定的查詢解析器(query parser)所解析,生成多個(gè)Query對(duì)象。當(dāng)然用戶也可以選擇不解析查詢語(yǔ)句杖虾,使查詢語(yǔ)句保留原始的狀態(tài)烂瘫。在ElasticSearch中,有的Query對(duì)象會(huì)被解析(analyzed)奇适,有的不會(huì)坟比,比如:前綴查詢(prefix query)就不會(huì)被解析,精確匹配查詢(match query)就會(huì)被解析嚷往。對(duì)用戶來(lái)說(shuō)葛账,理解這一點(diǎn)至關(guān)重要。

對(duì)于索引過(guò)程和搜索過(guò)程的數(shù)據(jù)解析這一環(huán)節(jié)皮仁,我們需要把握的重點(diǎn)在于:倒排索引中詞應(yīng)該和查詢語(yǔ)句中的詞正確匹配籍琳。如果無(wú)法匹配,那么Lucene也不會(huì)返回我們喜聞樂(lè)見(jiàn)的結(jié)果贷祈。舉個(gè)例子:如果在索引階段對(duì)文本進(jìn)行了轉(zhuǎn)小寫(lowercasing)和轉(zhuǎn)變成詞根形式(stemming)處理趋急,那么查詢語(yǔ)句也必須進(jìn)行相同的處理∈铺埽或是查詢使用的analyzer必須和索引時(shí)使用的analyzer相同呜达。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市粟耻,隨后出現(xiàn)的幾起案子查近,更是在濱河造成了極大的恐慌,老刑警劉巖勋颖,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗦嗡,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡饭玲,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門叁执,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)茄厘,“玉大人,你說(shuō)我怎么就攤上這事谈宛〈喂” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵吆录,是天一觀的道長(zhǎng)窑滞。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么哀卫? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任巨坊,我火速辦了婚禮,結(jié)果婚禮上此改,老公的妹妹穿的比我還像新娘趾撵。我一直安慰自己,他們只是感情好共啃,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布占调。 她就那樣靜靜地躺著,像睡著了一般移剪。 火紅的嫁衣襯著肌膚如雪究珊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天纵苛,我揣著相機(jī)與錄音苦银,去河邊找鬼。 笑死赶站,一個(gè)胖子當(dāng)著我的面吹牛幔虏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贝椿,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼想括,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了烙博?” 一聲冷哼從身側(cè)響起瑟蜈,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渣窜,沒(méi)想到半個(gè)月后铺根,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乔宿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年位迂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片详瑞。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡掂林,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坝橡,到底是詐尸還是另有隱情泻帮,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布计寇,位于F島的核電站锣杂,受9級(jí)特大地震影響脂倦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜元莫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一赖阻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柒竞,春花似錦政供、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至稼虎,卻和暖如春衅檀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背霎俩。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工哀军, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人打却。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓杉适,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親柳击。 傳聞我的和親對(duì)象是個(gè)殘疾皇子猿推,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Solr&ElasticSearch原理及應(yīng)用 一、綜述 搜索 http://baike.baidu.com/it...
    樓外樓V閱讀 7,285評(píng)論 1 17
  • ElasticSearch是一個(gè)基于Lucene的搜索服務(wù)器捌肴。它提供了一個(gè)分布式多用戶能力的全文搜索引擎蹬叭,基于RE...
    趙昱_(tái)dd5c閱讀 282評(píng)論 0 0
  • 1. 案例分析:什么時(shí)全文檢索,如何實(shí)現(xiàn)全文檢索 ? 1.1 案例 ? 實(shí)現(xiàn)一個(gè)文件的搜索功能状知,通過(guò)關(guān)鍵字搜索文件...
    東方舵手閱讀 1,181評(píng)論 0 1
  • elasticsearch ElasticSearch是一個(gè)基于Lucene的搜索服務(wù)器秽五。它提供了一個(gè)分布式多用戶...
    少年_2ddb閱讀 185評(píng)論 0 0
  • ElasticSearch 是一個(gè)分布式、高擴(kuò)展饥悴、高實(shí)時(shí)的搜索與數(shù)據(jù)分析引擎坦喘。它能很方便的使大量數(shù)據(jù)具有搜索、分析...
    炮炮_06ac閱讀 80評(píng)論 0 0