2011-05-02 48 views
1

Lucene中的索引是什麼?它是如何工作的?Lucene中的索引是什麼?

我已經瀏覽了一些關於net和google的文章,但是我完全無法理解索引,文檔等的概念。

如果有人能簡單地解釋術語索引和索引,請大家幫忙。

謝謝!

回答

2

假設你有一堆你想要搜索的信息。例如,一些HTML文件,一些PDF和一些存儲在數據庫中的信息。當用戶進行搜索時,您可以編寫一個搜索引擎,搜索這些信息並返回匹配的結果。但是,對於大量數據,這通常太慢。

因此,在運行我們的應用程序之前,我們創建了一個索引需要可搜索的信息。該索引包含我們希望在搜索中包含的每條信息的摘要。在Lucene中,信息摘要被稱爲文檔。一個文檔包含多個字段

創建索引時,根據您希望搜索的內容決定包含哪些字段。例如,您可以包含標題,ID,類別字符串等等。一旦定義了字段,就可以在每個信息項(html,pdf,數據庫條目等)的索引中創建一個文檔。這個過程被稱爲索引

搜索引擎現在可以使用索引來搜索事物。該指數針對我們所做的典型搜索進行了高度優化。您可以搜索特定字段中的信息並執行布爾邏輯。您可以搜索精確匹配或模糊匹配。搜索引擎會在索引中衡量/評分您的文檔,並首先返回最相關的文檔。

希望能在高層次上有所幫助。

0

Lucene創建一個倒轉的全文索引,它將文檔拆分爲單詞,爲每個單詞建立一個索引。

For Instance: 
Document 1: "Apache Lucene Java" 
Document 2: "Java Library" 

Inverted Index: 
Tokens  Document Location 
apache  1 
Library  2 
Java  1, 2 
Lucene  1 

允許擴大進一步,現在讓我們考慮文件有兩個正文標題

Document doc = new Document() 
doc.add(new Field("body", "This is my Test document", Field.Store.YES, Field.Index.TOKENIZED) 
doc.add(new Field("title", "Test document", Field.Store.YES, Field.Index.UNTOKENIZED) 

您可以靈活地標記字段或不標記字段。

Luncene有各種各樣的分析,使用StandardAnalyzer

Analyzer analyzer = new StandardAnalyzer() 

上述文件將被標記化 「我的」, 「測試」, 「文件」, 「測試文檔」