lucene學習之基礎概念

2021-07-11 08:00:50 字數 1827 閱讀 8587

lucene是乙個全文搜尋框架,而不是應用產品。因此它並不像 或者google desktop那麼拿來就能用,它只是提供了一種工具讓你能實現這些產品。

1.2 lucene能做什麼

1.3 你該不該選擇lucene

下面給出一些測試資料,如果你覺得可以接受,那麼可以選擇。

測試一:250萬記錄,300m左右文字,生成索引380m左右,800執行緒下平均處理時間300ms。

測試二:37000記錄,索引資料庫中的兩個varchar欄位,索引檔案2.6m,800執行緒下平均處理時間1.5ms。

2 lucene的工作方式

2.1寫入流程

源字串首先經過analyzer處理,包括:分詞,分成乙個個單詞;去除stopword(可選)。

將源中需要的資訊加入document的各個field中,並把需要索引的field索引起來,把需要儲存的field儲存起來。

將索引寫入儲存器,儲存器可以是記憶體或磁碟。

2.2讀出流程

使用者根據需要從找到的document中提取需要的field。

3 一些需要知道的概念

lucene用到一些概念,了解它們的含義,有利於下面的講解。

3.1 analyzer

analyzer 是分析器,它的作用是把乙個字串按某種規則劃分成乙個個詞語,並去除其中的無效詞語,這裡說的無效詞語是指英文中的「of」、 「the」,中文中的 「的」、「地」等詞語,這些詞語在文章中大量出現,但是本身不包含什麼關鍵資訊,去掉有利於縮小索引檔案、提高效率、提高命中率。

分詞的規則千變萬化,但目的只有乙個:按語義劃分。這點在英文中比較容易實現,因為英文本身就是以單詞為單位的,已經用空格分開;而中文則必須以某種方法將連成一片的句子劃分成乙個個詞語。具體劃分方法下面再詳細介紹,這裡只需了解分析器的概念即可。

3.2 document

使用者提供的源是一條條記錄,它們可以是文字檔案、字串或者資料庫表的一條記錄等等。一條記錄經過索引之後,就是以乙個document的形式儲存在索引檔案中的。使用者進行搜尋,也是以document列表的形式返回。

3.3 field

乙個document可以包含多個資訊域,例如一篇文章可以包含「標題」、「正文」、「最後修改時間」等資訊域,這些資訊域就是通過field在document中儲存的。

field有兩個屬性可選:儲存和索引。通過儲存屬性你可以控制是否對這個field進行儲存;通過索引屬性你可以控制是否對該field進行索引。這看起來似乎有些廢話,事實上對這兩個屬性的正確組合很重要,下面舉例說明:

還是以剛才的文章為例子,我們需要對標題和正文進行全文搜尋,所以我們要把索引屬性設定為真,同時我們希望能直接從搜尋結果中提取文章標題,所以我們把標題域的儲存屬性設定為真,但是由於正文域太大了,我們為了縮小索引檔案大小,將正文域的儲存屬性設定為假,當需要時再直接讀取檔案;我們只是希望能從搜尋解果中提取最後修改時間,不需要對它進行搜尋,所以我們把最後修改時間域的儲存屬性設定為真,索引屬性設定為假。上面的三個域涵蓋了兩個屬性的三種組合,還有一種全為假的沒有用到,事實上field不允許你那麼設定,因為既不儲存又不索引的域是沒有意義的。

3.4 term

term是搜尋的最小單位,它表示文件的乙個詞語,term由兩部分組成:它表示的詞語和這個詞語所出現的field。

3.5 tocken

tocken是term的一次出現,它包含trem文字和相應的起止偏移,以及乙個型別字串。一句話中可以出現多次相同的詞語,它們都用同乙個term表示,但是用不同的tocken,每個tocken標記該詞語出現的地方。

3.6 segment

新增索引時並不是每個document都馬上新增到同乙個索引檔案,它們首先被寫入到不同的小檔案,然後再合併成乙個大索引檔案,這裡每個小檔案都是乙個segment。

Lucene學習總結之七 Lucene搜尋過程解析

本系列文章將詳細描述幾乎最新版本的lucene的基本原理和 分析。其中總體架構和索引檔案格式是lucene 2.9的,索引過程分析是lucene 3.0的。鑑於索引檔案格式沒有太大變化,因而原文沒有更新,原理和架構的文章中引用了前輩的一些圖,可能屬於早期的lucene,但不影響對原理和架構的理解。本...

PureMVC學習筆記之基礎概念

首先看看兩者的區別 mvc mode view controller puremvc mvc proxy mediator command facade 接著小心推敲各自的職責 model proxy model儲存對proxy物件的引用,proxy負責運算元據模型,與遠端服務通訊訪問資料。這樣保證...

機器學習之基礎概念串講

機器學習的本質 利用樣本資料,借助各種機器學習方法,找到乙個從變數x到y的對映函式f,並用對映函式f來 測試樣本的標籤值。邏輯回歸 即線性回歸,它是一種線性擬合演算法,可以簡單理解為,通過樣本資料,找到相應的線性函式對映,即截距項的值和斜s值。擬合樣本資料的思想 求能夠使最小二乘項 損失函式 取得最...