Lucene 8.5.2演示API

Lucene 8.5.2演示API

演示模塊提供了簡單的示例代碼來展示Lucene的功能。

另請:說明

配套
描述
org.apache.lucene.demo
用於索引和搜索的演示應用程序。
org.apache.lucene.demo.facet
方面示例代碼。

演示模塊提供了簡單的示例代碼來展示Lucene的功能。

Apache Lucene-構建和安裝基本演示

關於本文件

本文檔旨在作爲使用和運行Lucene演示的“入門”指南。它引導您完成一些基本的安裝和配置。

關於演示

Lucene命令行演示代碼由一個應用程序組成,該應用程序演示了Lucene的各種功能以及如何將Lucene添加到您的應用程序。

設置你的CLASSPATH

首先,您應該下載最新的Lucene發行版,然後將其解壓縮到工作目錄中。

您需要四個JAR:Lucene JAR,queryparser JAR,通用分析JAR和Lucene演示JAR。提取存檔時,您應該在創建的core /目錄中看到Lucene JAR文件-它的名稱應類似於 lucene-core- {version} .jar。您還應該分別在queryparser,analysis / common /和demo /下看到名爲lucene-queryparser- {version} .jar, lucene-analyzers-common- {version} .jar和lucene- demo- {version} .jar的文件。

將所有這四個文件放入Java CLASSPATH中。

索引文件

一旦達到這一目標,您可能會渴望前進。讓我們建立一個索引!假設您正確設置了CLASSPATH,只需鍵入:

    java org.apache.lucene.demo.IndexFiles -docs {path-to-lucene}
這將產生一個名爲index的子目錄 ,其中將包含所有Lucene源代碼的索引。

搜索索引類型:

    java org.apache.lucene.demo.SearchFiles
系統將提示您進行查詢。輸入亂碼或拼寫單詞(例如:“ superca lifragilisticexpialidocious”)。您會看到,lucene源代碼中沒有任何處理結果。現在嘗試輸入單詞“ string”。那應該返回一堆文件。結果將在每十分之一的結果頁面顯示,並詢問您是否要獲得更多結果。

關於代碼

在本節中,我們將瀏覽命令行Lucene演示背後的源代碼:在哪裏可以找到它們,它們的組成部分以及它們的功能。本部分適用於希望瞭解如何在其應用程序中使用Lucene的Java開發人員。

源位置

此處討論的文件直接鏈接到本文檔:

 

索引文件

正如我們在上一個演練中所討論的那樣,IndexFiles類創建一個Lucene索引。讓我們看看它是如何做到的。

在主()方法分析命令行參數,則在實例化製備 IndexWriter,打開 Directory,和實例化StandardAnalyzer 和IndexWriterConfig

所述的值-index命令行參數是其中應該存儲所有索引信息文件系統目錄的名稱。如果IndexFiles與在給定的相對路徑調用-index命令行參數,或者如果-index沒有給出命令行參數,使默認的相對索引路徑“ 指數 ”被使用,索引路徑將被創建作爲當前工作目錄的子目錄(如果尚不存在)。在某些平臺上,索引路徑可能在其他目錄(例如用戶的主目錄)中創建。

所述-docs命令行參數值是包含文件的目錄的位置被索引。

該-update命令行參數告訴 IndexFiles不刪除索引,如果它已經存在。如果未提供-update,則IndexFiles將在索引任何文檔之前先將板擦乾淨。

IndexWriterDirectory使用Lucene 將信息存儲在索引中。除了 我們使用的實現之外,還有其他幾個Directory子類可以寫入RAM,數據庫等。FSDirectory

Lucene Analyzer正在處理流水線,這些流水線將文本分解爲帶索引的標記(又名術語),並可選地對這些標記執行其他操作,例如縮減大小寫,同義詞插入,過濾掉不需要的標記等。我們使用的分析器是StandardAnalyzer,它使用以下方法創建標記Unicode標準附件#29中指定的Unicode文本分段算法中的分詞規則; 將令牌轉換爲小寫;然後過濾掉停用詞。停用詞是常見的語言詞,例如文章(a,an,the等)和其他標記,可能對搜索的價值較小。應該注意的是,每種語言都有不同的規則,您應該爲每種語言使用適當的分析器。Lucene當前爲多種不同的語言提供了分析器(請參閱lucene / analysis / common / src / java / org / apache / lucene / analysis下的javadocs )。

該IndexWriterConfig實例適用於所有配置的IndexWriter。例如,我們基於-update命令行參數的值將OpenMode設置爲在此處使用。

在文件中往下看,實例化IndexWriter之後,您應該看到indexDocs()代碼。此遞歸函數對目錄進行爬網並創建Document對象。該 文獻僅僅是一個數據對象來表示從文件以及其創建時間和位置的文本內容。這些實例將添加到IndexWriter中。如果提供了 -update命令行參數,則 IndexWriterConfig OpenMode將設置爲OpenMode.CREATE_OR_APPEND,並且IndexWriter會 更新而不是將文檔添加到索引中通過嘗試查找具有相同標識符的已索引文檔(在我們的示例中,文件路徑作爲標識符)將它們添加到索引中;從索引中刪除它(如果存在);然後將新文檔添加到索引。

搜索文件

SearchFiles類是相當簡單的。它主要與合作 IndexSearcher, StandardAnalyzer,(這是在使用IndexFiles類以及)和一個QueryParser。查詢解析器由一個分析器構造而成,該分析器用於解釋您的查詢文本,其解釋方式與解釋文檔的方式相同:查找單詞邊界,縮小大小寫並刪除“ a”,“ an”和“ the”等無用的單詞。該 Query對象包含的結果,該結果 QueryParser傳遞給搜索者。請注意,也可以通過編程方式構造一個豐富的Query 對象,而無需使用查詢解析器。查詢解析器僅啓用將 Lucene查詢語法解碼爲相應的 Query對象。

SearchFiles使用 IndexSearcher.search(query,n)返回 TopDocs最大 n次匹配的方法。結果以頁面形式打印,按得分(即相關性)排序。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章