Lucene之建立索引

2021-06-28 21:02:36 字數 2166 閱讀 7001

lucene用來建搜尋引擎要解決四個問題:抓取資料、解析資料、建立索引和執行搜尋。

首先為每一篇文章新增標題、內容、寫作時間等資訊,從而寫好每一篇文章,然後將每一篇文章新增到書裡面去。這樣問及就寫好了。

建立索引的過程如下:

①  建立索引器indexwriter,這相當於一本書的框架。

②  建立文件物件docment,這相當於一篇文章。

③  建立資訊字段物件field,這相當於一篇文章中的不同資訊(標題、正文等)。

④  將field新增到document裡面。

⑤  將document新增到indexwriter裡面。

⑥  關閉索引器indexwriter。

建立索引有三個基本步驟:

①  建立field,將文章的不同資訊包裝起來。

②  將多個field組織到乙個document裡面,這樣就完成了對一篇文章的包裝。

③  將多個document組織到乙個indexwriter裡面,也就是將多篇文章組裝起來,最終形成索引。

一、建立field:

建立field的方法很多,下面是最常用的方法:

field field=new field(field名稱,field內容,儲存方式,索引方式);

這四個引數的意義如下:

①  field名稱就是為field起的名字,類似資料表的欄位名稱。

②  field內容就是該field的內容,類似資料表的字段內容。

③  儲存方式包括三種:

不儲存(field.store.no)、完全儲存(field.store.yes)和壓縮儲存(field.store.compress)

一般情況下不擔心索引太大的話,可以都使用完全儲存的方式,但出於對效能的考慮,索引檔案的內容是越小越好,因此,如果field的內容很少就採用完全儲存(如標題),如果field的內容很多就採用不儲存或者壓縮儲存的方式(如正文)。

④  索引方式包括四種:

不索引(field.index.no),索引但不分析(field.index.no_norms)、索引但不分詞(field.index.un_tokenized)、分詞並索引(field.index.tokenized)

通常我們會按照標題和全文進行模糊搜尋,這類需要進行模糊搜尋的字段就用field.index.tokenized。通常我們會按照作者名稱進行模糊搜尋,需要進行精確搜尋的字段就用field.index.un_tokenizer。對於那些只需要跟著搜尋結果顯示出來卻不需要按照其內容進行搜尋的字段,使用field.index.no。

二、建立document

document doc=new document();//這個方法建立乙個不包含任何field的空document。

如果想把field新增到document裡面,只需要使用add方法,如:doc.add(field);

重複使用這個方法就可以將多個field加入到乙個document裡面。

三、建立indexwriter

建立indexwriter方法很多,下面是最常用的方法:

indexwriter writer=new indexwriter(儲存索引的路徑,分析器的例項);

這兩個引數的含義如下:

① 儲索引的路徑就是索引被儲存在硬碟上的物理路徑,如:c:\mydir等。

② 分析器例項。分析器用來做詞法分析的,包括英文分析器和中文分析器等。要根據索要建立縮影的檔案情況選擇恰當的分析器,常用的有standardanalyzer(標準分析器)、cjkanalyzer(二分法分詞器)、chineseanalyzer(中文分析器)和frenchanalyzer(法語分析器)等,也可以根據自己的需要去編寫分析器,從而處理不同的語言文字。

通過建立indexwriter,就把邏輯索引和物理索引聯絡起來了,這樣就可以很方便地建立索引,如indexwriter writer=new indexwriter(」c:/my/index」,newcjkanalyzer());

使用new indexwriter()方法建立起來的是乙個空的索引器,要把document新增到索引中來,需要使用adddocument方法,如:

writer.adddocument(doc);

類似於向document中新增field,重複執行這個操作就可以向乙個indexwriter中新增多個field.

最後在索引建立完成的時候要使用close方法關閉索引器:

writer.close();

Lucene入門之建立索引

1,建立索引器 indexwriter 2,建立文件物件 document 3,建立資訊字段物件 field 4,將field 新增到document 裡面5,將document 新增到indexwriter 6,關閉indexwriter field field new field field 名...

Lucene 建立索引

public class indexer public static string indexdir d luceneindex public static void main string args system.out.println 被索引的文件個數 writer.numdocs catch ...

如何建立Lucene索引

需要用到的ipa indexwriter 這個是索引建立的中心元件,通過他就可以建立索引,它是生成索引的過程 與讀取和搜尋索引沒有關係 初始化化它時,需要傳遞的兩個引數。第乙個是引數是指定索引建立的位置,第二是引數是配置分詞器。document 這個文字相當於資料庫中的一條記錄,它裡面需要新增fie...