lucene3 x核心類介紹

2021-09-01 01:34:42 字數 1702 閱讀 3048

:) [b]索引核心類[/b] :o

[b]directory[/b]:描述lucene索引存放的位置,是乙個抽象類,由子類負責指定索引存在位置:記憶體或者磁碟;

[b]indexwrite[/b]r:負責建立或者開啟新索引,以及對索引做增刪改操作;

[b]analyzer[/b]:文字檔案在被索引前需要經過它進行分析,把它的物件在indexwriter構造時傳入,是抽象類;analyzer 是分析器,它的作用是把乙個字串按某種規則劃分成乙個個詞語,並去除其中的無效詞語,這裡說的無效詞語是指英文中的「of」、 「the」,中文中的 「的」、「地」等詞語,這些詞語在文章中大量出現,但是本身不包含什麼關鍵資訊,去掉有利於縮小索引檔案、提高效率、提高命中率。

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

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

[b]field[/b]:每個域都有網域名稱和對應的域值;乙個document可以包含多個資訊域,例如一篇文章可以包含「標題」、「正文」、「最後修改時間」等資訊域,這些資訊域就是通過field在document中儲存的。

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

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

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

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

:roll: [b]搜尋核心類[/b] :oops:

[b]indexsearcher[/b]:以唯讀的方式開啟索引,需要directory(指出索引位置)構造出來;

[b]term[/b]:搜尋時候基本單元,由網域名稱和域值組成,類似於field;term是搜尋的最小單位,它表示文件的乙個詞語,term由兩部分組成:它表示的詞語和這個詞語所出現的field。

[b]query[/b]:查詢抽象類,有許多具體的子類實現,如termquery;

[b]termquery[/b]:匹配指定域中包含特定項的文件;

[b]topdocs[/b]:乙個簡單的指標日期,指向前n個排名的搜尋結果。

lucene3 x的工作方式

lucene提供的服務實際包含兩部分 一入一出。所謂入是寫入,即將你提供的源 本質是字串 寫入索引或者將其從索引中刪除 1 寫入流程 源字串首先經過analyzer處理,包括 分詞,分成乙個個單詞 去除stopword 可選 將源中需要的資訊加入document的各個field中,並把需要索引的fi...

Lucene的Query類介紹

把lucene的查詢當成sql的查詢,也許會籠統的明白些query的真相了。查詢分為大致兩類,1 精準查詢。2,模糊查詢。建立測試資料。private directory directory private indexreader reader private string ids private ...

Lucene學習筆記(2) 幾個核心類

索引核心類 indexwriter 寫索引的核心元件,負責 建立新索引 或者 開啟已有索引 及 向索引cud操作 direcotry 描述索引存放位置。抽象類 analyzer 分詞器。抽象類,多種不同分詞實現 document 代表一些域集合,可以理解成虛擬文件。field 域值對 搜尋核心類 i...