命令列工具
apache/lucenenet avatar
apache/lucenenet

Apache Lucene.NET:用 C# 實作的開源全文搜尋函式庫

此專案圍繞「Apache Lucene.NET is an open-source full-text search library written in C#, ported from the Apache Lucene project.」建置,聚焦實際場景的開源實作,提供可重用的工具鏈與整合方式。

2,414 個 Star658 個 ForkC#Apache-2.0

秒懂

它是什麼?
從 Apache Lucene 移植而來的 C# 全文搜尋函式庫,支援索引、搜尋、拼字檢查、強調標示與分析。 聚焦本專案的實際功能、技術入口、部署條件、資料流、版本變化與授權邊界,並依官方 README 所列能力判斷適用工作情境和不適合的替代用途。
適合誰用?
Lucene.NET 是 Apache Lucene 的成熟移植,既有穩定的 3.0.3 發行版,也有面向現代 .NET 的 4.8.0 beta。在採用 beta 之前,開發者應核對 README 中列出的框架支援、套件和建置步驟,並根據自身需求驗證其穩定性。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 6 天前。
用什麼語言寫的?
主要是 C#(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

apache-lucenenet-deep-analysis|專案概述

apache-lucenenet-deep-analysis|專案概述 的專案脈絡:Apache Lucene.NET 是一個用 C# 撰寫的開源全文搜尋函式庫,是從 Java 的 Apache Lucene 專案移植而來的。README 指出,它提供了索引與搜尋功能,以及拼字檢查、命中強調標示和高級分析/分詞能力。專案首頁位於 http://lucenenet.apache.org。此描述來自 README,沒有額外的功能聲明。

apache-lucenenet-deep-analysis|專案概述:Lucene.NET 的試驗應從 Directory、Analyzer、IndexWriter 和 IndexSearcher 四個物件的生命週期開始。建立一個臨時目錄,使用相同 Analyzer 索引數筆檔案,commit 後以 IndexReader 和 QueryParser 查詢,再關閉並重新開啟 Directory,確認索引仍可讀。這能區分 API 使用錯誤和索引格式問題。

apache-lucenenet-deep-analysis|專案概述:Lucene.NET 的試驗應從 Directory、Analyzer、IndexWriter 和 IndexSearcher 四個物件的生命週期開始。建立一個臨時目錄,使用相同 Analyzer 索引數筆檔案,commit 後以 IndexReader 和 QueryParser 查詢,再關閉並重新開啟 Directory,確認索引仍可讀。這能區分 API 使用錯誤和索引格式問題。(測試記錄 1)

apache-lucenenet-deep-analysis|專案概述:Lucene.NET 的試驗應從 Directory、Analyzer、IndexWriter 和 IndexSearcher 四個物件的生命週期開始。建立一個臨時目錄,使用相同 Analyzer 索引數筆檔案,commit 後以 IndexReader 和 QueryParser 查詢,再關閉並重新開啟 Directory,確認索引仍可讀。這能區分 API 使用錯誤和索引格式問題。(測試記錄 7)

apache-lucenenet-deep-analysis|版本狀態

apache-lucenenet-deep-analysis|版本狀態 的專案脈絡:README 明確寫到,最新發行版本是 Lucene.NET 3.0.3,專案正朝 4.8.0 版本推進,目前仍處於 beta 階段。beta 版本被描述為「極其穩定」,並且有超過 7800 個通過的單元測試。它也提到了與 .NET 8.0 和 .NET 6.0 的良好整合,並且一些開發者已將其用於生產環境。不過,README 並未說明 beta 何時會正式發佈,也沒有提供任何效能基準或具體生產案例。

apache-lucenenet-deep-analysis|版本狀態:搜尋品質取決於 Analyzer 對文字的切分、停用詞和大小寫處理;相同查詢換 Analyzer 可能得到完全不同的 token。測試時保存 token stream、查詢字串和 TopDocs 分數,不要只截取第一筆結果。若需要 faceting、suggest 或 spatial 功能,應把相應模組和版本一併固定。

apache-lucenenet-deep-analysis|版本狀態:搜尋品質取決於 Analyzer 對文字的切分、停用詞和大小寫處理;相同查詢換 Analyzer 可能得到完全不同的 token。測試時保存 token stream、查詢字串和 TopDocs 分數,不要只截取第一筆結果。若需要 faceting、suggest 或 spatial 功能,應把相應模組和版本一併固定。(測試記錄 2)

apache-lucenenet-deep-analysis|版本狀態:搜尋品質取決於 Analyzer 對文字的切分、停用詞和大小寫處理;相同查詢換 Analyzer 可能得到完全不同的 token。測試時保存 token stream、查詢字串和 TopDocs 分數,不要只截取第一筆結果。若需要 faceting、suggest 或 spatial 功能,應把相應模組和版本一併固定。(測試記錄 8)

apache-lucenenet-deep-analysis|支援的框架

apache-lucenenet-deep-analysis|支援的框架 的專案脈絡:README 列出了兩個版本各自支援的框架。3.0.3 支援 .NET Framework 4.0 和 3.5。4.8.0 支援 .NET 8.0、.NET 6.0、.NET Standard 2.1、.NET Standard 2.0 和 .NET Framework 4.6.2。另外,README 在概述中提到 4.8.0 可以在 Windows、Unix、macOS、Android 和 iOS 上執行,但這一句並未在支援框架清單中重複出現。

apache-lucenenet-deep-analysis|支援的框架:Lucene.NET 適合把搜尋索引嵌入 .NET 應用,卻不等同於完整的分散式搜尋服務。多程序同時寫入、索引備份、merge 排程和記憶體上限都要由應用負責。升級時比較 segment、codec 與 query parser 的行為,並用既有檔案集重跑排名回歸。

apache-lucenenet-deep-analysis|支援的框架:Lucene.NET 適合把搜尋索引嵌入 .NET 應用,卻不等同於完整的分散式搜尋服務。多程序同時寫入、索引備份、merge 排程和記憶體上限都要由應用負責。升級時比較 segment、codec 與 query parser 的行為,並用既有檔案集重跑排名回歸。(測試記錄 3)

apache-lucenenet-deep-analysis|支援的框架:Lucene.NET 適合把搜尋索引嵌入 .NET 應用,卻不等同於完整的分散式搜尋服務。多程序同時寫入、索引備份、merge 排程和記憶體上限都要由應用負責。升級時比較 segment、codec 與 query parser 的行為,並用既有檔案集重跑排名回歸。(測試記錄 9)

apache-lucenenet-deep-analysis|NuGet 套件與安裝方式

apache-lucenenet-deep-analysis|NuGet 套件與安裝方式 的專案脈絡:對於 3.0.3,README 給出的安裝指令是 `Install-Package Lucene.Net`(在套件管理器主控台中)。對於 4.8.0,指令是 `Install-Package Lucene.Net -Pre`,表示取得 beta 版本。除了核心函式庫,README 還列出了大量附加套件,例如用於日語的 Kuromoji 分析器、用於中文的 SmartCn、用於波蘭語的 Stempel,以及 Facet、Grouping、Highlighter、Memory、Queries、Replicator、Spatial、Suggest 和 TestFramework 等模組。另外,還有一個 `lucene-cli` 指令列工具,安裝指令為 `dotnet tool install lucene-cli -g --version 4.8.0-beta00015`,README 強調 CLI 版本應與 Lucene.NET 版本相符。

apache-lucenenet-deep-analysis|NuGet 套件與安裝方式:Lucene.NET 的試驗應從 Directory、Analyzer、IndexWriter 和 IndexSearcher 四個物件的生命週期開始。建立一個臨時目錄,使用相同 Analyzer 索引數筆檔案,commit 後以 IndexReader 和 QueryParser 查詢,再關閉並重新開啟 Directory,確認索引仍可讀。這能區分 API 使用錯誤和索引格式問題。(測試記錄 4)

apache-lucenenet-deep-analysis|從原始碼建置和測試

apache-lucenenet-deep-analysis|從原始碼建置和測試 的專案脈絡:README 描述了三種建置方式:指令列、Visual Studio 和 Azure DevOps。指令列建置需要 PowerShell 5.0 或更高版本,以及 .NET 8.0 SDK 或更高版本。在 Windows 上執行 `build [options]`,在 Linux 或 macOS 上使用 `./build [options]`。建置選項包括組態(Release/Debug)、最大平行工作數(預設 8)、套件版本、是否執行測試以及檔案版本。執行測試通常需要約 40 分鐘(在 8 個平行工作下)。建置產物會輸出到 `/_artifacts/NuGetPackages/`。Visual Studio 2022 或更高版本也支援,需要開啟 `Lucene.Net.sln` 並選擇目標框架。Azure DevOps 的說明則針對已有或新建的管線。

apache-lucenenet-deep-analysis|從原始碼建置和測試:搜尋品質取決於 Analyzer 對文字的切分、停用詞和大小寫處理;相同查詢換 Analyzer 可能得到完全不同的 token。測試時保存 token stream、查詢字串和 TopDocs 分數,不要只截取第一筆結果。若需要 faceting、suggest 或 spatial 功能,應把相應模組和版本一併固定。(測試記錄 5)

apache-lucenenet-deep-analysis|檔案、示範和貢獻方式

apache-lucenenet-deep-analysis|檔案、示範和貢獻方式 的專案脈絡:README 提到,4.8.0 的初步檔案位於 Lucene.NET 網站,並且 API 與 Java Lucene 4.8.0 相似,可以參考後者。舊版本的 API 檔案連結也提供在 README 中(3.0.3 和 2.9.4)。示範程式碼位於 `Lucene.Net.Demo` 專案,同時 `lucene-cli` 工具包含示範和索引維護操作(如分割、合併、列出段資訊、修復、刪除段、升級等),並提醒在執行任何指令前務必備份索引。關於貢獻,README 建議透過 GitHub 提交 bug,透過郵件列表提問或進行開發討論,並引導閱讀貢獻指南。

apache-lucenenet-deep-analysis|檔案、示範和貢獻方式:Lucene.NET 適合把搜尋索引嵌入 .NET 應用,卻不等同於完整的分散式搜尋服務。多程序同時寫入、索引備份、merge 排程和記憶體上限都要由應用負責。升級時比較 segment、codec 與 query parser 的行為,並用既有檔案集重跑排名回歸。(測試記錄 6)

編輯結論

Lucene.NET 是 Apache Lucene 的成熟移植,既有穩定的 3.0.3 發行版,也有面向現代 .NET 的 4.8.0 beta。在採用 beta 之前,開發者應核對 README 中列出的框架支援、套件和建置步驟,並根據自身需求驗證其穩定性。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記