Lucene中的索引是什麼?它是如何工作的?Lucene中的索引是什麼?
我已經瀏覽了一些關於net和google的文章,但是我完全無法理解索引,文檔等的概念。
如果有人能簡單地解釋術語索引和索引,請大家幫忙。
謝謝!
Lucene中的索引是什麼?它是如何工作的?Lucene中的索引是什麼?
我已經瀏覽了一些關於net和google的文章,但是我完全無法理解索引,文檔等的概念。
如果有人能簡單地解釋術語索引和索引,請大家幫忙。
謝謝!
假設你有一堆你想要搜索的信息。例如,一些HTML文件,一些PDF和一些存儲在數據庫中的信息。當用戶進行搜索時,您可以編寫一個搜索引擎,搜索這些信息並返回匹配的結果。但是,對於大量數據,這通常太慢。
因此,在運行我們的應用程序之前,我們創建了一個索引需要可搜索的信息。該索引包含我們希望在搜索中包含的每條信息的摘要。在Lucene中,信息摘要被稱爲文檔。一個文檔包含多個字段。
創建索引時,根據您希望搜索的內容決定包含哪些字段。例如,您可以包含標題,ID,類別字符串等等。一旦定義了字段,就可以在每個信息項(html,pdf,數據庫條目等)的索引中創建一個文檔。這個過程被稱爲索引。
搜索引擎現在可以使用索引來搜索事物。該指數針對我們所做的典型搜索進行了高度優化。您可以搜索特定字段中的信息並執行布爾邏輯。您可以搜索精確匹配或模糊匹配。搜索引擎會在索引中衡量/評分您的文檔,並首先返回最相關的文檔。
希望能在高層次上有所幫助。
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()
上述文件將被標記化 「我的」, 「測試」, 「文件」, 「測試文檔」