lucene2 0學習文件二

2021-08-30 07:12:53 字數 1630 閱讀 7461

下面講一下索引的建立

其實從上面的例子就可以看出建立索引就用到document,indexwriter,field。 最簡單的步驟就是:

首先分別new 乙個document,indexwriter,field,然後用doument.add()方法加入field.其次用indexwrtier.adddocument()

方法加入document。 最後呼叫一下indexwriter.close()方法關閉輸入索引,這一步非常的重要只有呼叫這個方法索引才會被

寫入索引的目錄裡,而這是被很多初學的人所忽略的。 document沒有什麼好介紹的,把它的作用看成資料庫中的一行記錄就行。

field是乙個比較重要的也是比較複雜的,看一下它的建構函式有5個:

field(string name, byte value, field.store store)

field(string name, reader reader)

field(string name, reader reader, field.termvector termvector)

field (string name, string value, field.store store, field.index index)

field (string name, string value, field.store store, field.index index, field.termvector termvector)

在field中有三個內部類:field.index,field.store,field.termvector,而建構函式也用到了它們。

注意:termvector是lucene 1.4新增的,它提供一種向量機制來進行模糊查詢,這個不常用。它們的不同的組合,在全文檢索

中有著不同的作用。看看下面的表吧:

field.index

field.store

說明tokenized(分詞)

yes被分詞索引且儲存

tokenized

no被分詞索引但不儲存

noyes

這是不能被搜尋的,它只是被搜尋內容的附屬物。如url等

un_tokenized

yes/no

不被分詞,它作為乙個整體被搜尋,搜一部分是搜不出來的

nono

沒有這種用法

而對於field (string name, reader reader)

field (string name, reader reader, field.termvector termvector)

他們是field.index.tokenized和field.store.no的。這就是為什麼我們在上面的例子中會出現文章的內容為 null了。因為它只是被索引了,而並沒有被儲存下來。如果一定要看到文章的內容的話可以通過文章的路徑得到。畢竟文章的路徑是作為搜尋的附屬物被搜尋出來了。而我們在web開發的時候一般是將大資料放在資料庫中,不會放在檔案系統中,更不會放在索引目錄裡,因為它太大了操作會加大伺服器的負擔。

下面介紹一下indexwriter:

它就是乙個寫入索引的寫入器,它的任務比較簡單:

1.用adddocument()將已經準備好寫入索引的document們加入

2.呼叫close()將索引寫入索引目錄

Lucene 2 0學習文件( )

接 indexwriter file path,analyzer a,boolean create indexwriter string path,analyzer a,boolean create 可見構造它需要乙個索引檔案目錄,乙個分析器 一般用標準的這個 最後乙個引數是標識是否清空索引目錄 它...

lucene2 0學習文件三

先看一下它的建構函式 indexwriter directory d,analyzer a,boolean create indexwriter file path,analyzer a,boolean create indexwriter string path,analyzer a,boolea...

lucene2 0學習文件四

public void searchermaxfield throws parseexception,ioexception query queryparser.parse 程式設計師之家 indexsearcher new indexsearcher c index hits indexsearc...