apache lucene 的核心類

2021-09-05 20:57:39 字數 2263 閱讀 9656

下邊介紹一下lucene的核心類:(參考lucene in action)

主要有兩部分組成,核心索引類和核心搜尋類,顧名思意,就是用來建立索引和用來搜尋的類。

indexwriter:可以對索引進行寫操作,但不能讀取或者搜尋。是唯一能寫索引的類。

analyzer:分析文字內容,提取關鍵字

document:乙個document代表欄位的集合。你可以把它想象為以後可獲取的虛擬文件—一塊資料,如乙個網頁、乙個郵件訊息或乙個文字檔案。乙個文件的字段代表這個文件或與這個文件相關的元資料

field:在索引中的每個document含有乙個或多個字段,具體化為field類。每個字段相應於資料的乙個片段,將在搜尋時查詢或從索引中重新獲取。

lucene提供四個不同的字段型別,你可以從中做出選擇:

keyword—不被分析,但是被索引並逐字儲存到索引中。這個型別適合於原始值需要保持原樣的字段,如url、檔案系統路徑、日期、個人名稱、社會安全號碼、**號碼等等。例如,我們在indexer(列表1.1)中把檔案系統路徑作為keyword欄位。

unindexed —不被分析也不被索引,但是它的值儲存到索引中。這個型別適合於你需要和搜尋結果一起顯示的字段(如url或資料庫主鍵),但是你從不直接搜尋它的值。因 為這種型別欄位的原始值儲存在索引中,這種型別不適合於存放比較巨大的值,如果索引大小是個問題的話。

unstored—和unindexed相反。這個字段型別被分析並索引但是不儲存在索引中。它適合於索引大量的文字而不需要以原始形式重新獲得它。例如網頁的主體或任休其它型別的文字文件。

text —被分析並索引。這就意味著這種型別的字段可以被搜尋,但是要小心字段大小。如果要索引的資料是乙個string,它也被儲存;但如果資料(如我們的 indexer例子)是來自乙個reader,它就不會被儲存。這通常是混亂的**,所以在使用field.text時要注意這個區別。

所有欄位由名稱和值組成。你要使用哪種字段型別取決於你要如何使用這個欄位和它的值。嚴格來說,lucene只有乙個字段型別:以各自特徵來區分的字段。有些是被分析的,有些不是;有些是被索引,然面有些被逐字地儲存等等。

注 意 注意field.text(string, string)和field.text(string, reader)之間的區別。string變數儲存字段資料,而reader變數不儲存。為索引乙個string而又不想儲存它,可以用 field.unstored(string, string)

下邊是核心搜尋類:

indexsearcher:indexsearcher 用來搜尋而indexwriter用來索引:暴露幾個搜尋方法的索引的主要鏈結。你可以把indexsearcher想象為以唯讀方式開啟索引的乙個類。 它提供幾個搜尋方法,其中一些在抽象基類searcher中實現;最簡單的接受單個query物件做為引數並返回乙個hits物件。這個方法的典型應用類 似這樣:

=new

indexsearcher(

/tmp

/index」, 

false

));=new

termquery(

newterm(「contents」, 「lucene」));

=is.search(q);

term:

term是搜尋的基本單元。與field物件類似,它由一對字串元素組成:欄位的名稱和字段的值。注意term物件也和索引過程有關。但是它們是由lucene內部生成,所以在索引時你

一般不必考慮它們。在搜尋時,你可能建立term物件並termquery同時使用。

query q = new termquery(new term(「contents」, 「lucene」));

hits hits = is.search(q);

這段**使lucene找出在contents欄位中含有單詞lucene的所有文件。因為termquery物件繼承自它的抽象父類query,你可以在等式的左邊用query型別。

query

lucene 中包含一些query的具體子類。到目前為止,在本章中我們僅提到過最基本的lucene query:termquery。其它query型別有booleanquery,phrasequery, prefixquery, phraseprefixquery, rangequery, filteredquery和spanquery

termquery

termquery是lucene支援的最基本的查詢型別,並且它也是最原始的查詢型別之一。它用來匹配含有指定值的字段的文件.

hits類是乙個搜尋結果(匹配給定查詢的文件)文件佇列指標的簡單容器。基於效能考慮,hits的例項並不從索引中載入所有匹配查詢的所有文件,而是每次一小部分

apache lucene 的核心類

原文如下 主要有兩部分組成,核心索引類和核心搜尋類,顧名思意,就是用來建立索引和用來搜尋的類。indexwriter 可以對索引進行寫操作,但不能讀取或者搜尋。是唯一能寫索引的類。analyzer 分析文字內容,提取關鍵字 document 乙個document代表欄位的集合。你可以把它想象為以後可...

全文檢索 Apache Lucene初探

我們簡單的講解一下什麼是 全文檢索 因此,很容易的我們想到,應該建立乙個關鍵字與檔案的相關對映,下圖很明白的解釋了這種對映如何實現。在lucene中,就是使用這種 倒排索引 的技術,來實現相關對映。下面是lucene的資料必出現的一張圖,但也是其精髓的概括。我們可以看到,lucene的使用主要體現在...

Java核心中的核心 多型

一句話概括多型 也叫動態繫結 在執行期間,判斷其引用的實際型別,根據其實際的型別,呼叫對應的方法。多型可以幫助我們的程式的顆擴充套件性達到極致。多型的三個必要條件 1 要有繼承。2 子類要重寫父類的方法。3 父類的引用指向子類的物件。根據以下的 來理解 class animal 在animal類裡面...