CLIツール
apache/lucenenet avatar
apache/lucenenet

Apache Lucene.NET:Install-Package Lucene.Net -Pre

このプロジェクトは「Apache Lucene.NET is an open-source full-text search library written in C#, ported from the Apache Lucene project.」を基盤として、実践的に使えるオープンソース実装を提供し、再利用可能なツールチェーンと統合手段を備えています。

スター 2,414フォーク 658C#Apache-2.0

ひと目でわかる

これは何?
Java LuceneのC#移植であるApache Lucene.NET。正式版3.0.3と4.8.0-beta00018、Kuromoji、./build、lucene-cliの版一致をREADMEの事実で整理する。
誰に向いている?
.NETに全文検索を埋め込みたい開発者が、日本語解析まで含めて試す用途に合う。正式版だけが必要ならLatest Release Versionの3.0.3(.NET Framework 3.5/4.0)に留まる。
商用利用できる?
できます。Apache-2.0 は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 6 日前です。
何の言語で書かれている?
主に C# です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

Java LuceneをC#へ移植した全文検索の範囲

Apache Lucene.NETはC#で書かれた全文検索ライブラリで、JavaのApache Luceneを移植した、とREADME冒頭が定義する。索引作成と検索に加え、スペルチェック、ヒットハイライト、高度な解析とトークン化を提供する、と続く。公式サイトはhttp://lucenenet.apache.org(https://lucenenet.apache.org/)。実装言語はC#、ライセンスはApache-2.0、既定ブランチはmaster。素材時点でアーカイブではなく、pushedAtは2026-06-22T22:55:12Z。

4.8(まだBeta)は.NETが動くところ、Windows、Unix、macOS、Android、iOSで動く、とREADMEが書く。これはSupported Frameworks節のTFM一覧とは別の文で、モバイルでの検証手順は本文に無い。NuGetバッジ、Azure DevOps(dev.azure.com/lucene-net/Lucene.NET/_build?definitionId=3)、LICENSE.txtへのバッジがREADME上部にある。

移植である以上、Java Lucene 4.8.0のAPIに近い、というのが後段Documentation節の説明である。C#の慣用に合わせて全部書き直した別実装、という読み方はREADMEと合わない。Java側の概念(Analyzer、IndexWriter、QueryParser)を知っている人が、NuGetから同じ操作を.NETで再現する、というのがこのライブラリの使い方になる。

正式版3.0.3と4.8.0-betaの二系統

README Status節はLatest Release VersionをLucene.NET 3.0.3とし、4.8.0へ向けて作業中で現在BETA、と書く。ベータはextremely stable、7800以上の単体テストが通る、.NET 8.0と.NET 6.0とよく統合する、一部の開発者はすでに本番で使っている、はいずれもREADMEの自報である。正式化の日程、性能ベンチ、具体的な本番事例名は本文に無い。

Supported Frameworks節では、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、と分かれる。古いFramework専用のアプリは3.0.3、現行の.NET 6/8は4.8.0-beta、という切り分けがREADMEの表から読める。4.8.0を3.5向けに戻す話は書いていない。

GitHub ReleasesのタグはLucene.Net_4_8_0_beta00018(2026-06-22)、beta00017(2024-10-29)、beta00016(2022-02-17)。最新の「正式版」と最新の「タグ」が違う。NuGetのInstall-Package Lucene.Net(プレリリース無し)は3.0.3系統、Install-Package Lucene.Net -Preが4.8.0ベータ系統、とDownload節が分けている。混在させないことが、最初の判断になる。

KuromojiとSmartCnの4.8.0パッケージ群

3.0.3のコアはパッケージマネージャコンソールでInstall-Package Lucene.Net。付属はLucene.Net.Contrib、Lucene.Net.Contrib.Spatial、Lucene.Net.Contrib.Spatial.NTS(NetTopologySuite対応の地理空間)。4.8.0のコアはInstall-Package Lucene.Net -Pre。All PackagesとしてREADMEが列挙するのは、Lucene.Net、Analysis.Common、Analysis.Kuromoji(日本語形態素)、Analysis.Morfologik(辞書ステミング、ポーランド語辞書内蔵)、Analysis.OpenNLP、Analysis.Phonetic(音声的署名)、Analysis.SmartCn(中国語)、Analysis.Stempel(ポーランド語)、Benchmark、Classification、Codecs、Expressions、Facet、Grouping、Highlighter、ICU、Join、Memory、Misc、Queries、QueryParser、などである。素材のREADMEはこの先で切れている。

日本語本文を索引するならKuromoji、中国語ならSmartCn、というのがパッケージ名から読める対応である。3.0.3側にKuromojiは列挙されていない。日本語検索を4.8.0-betaで試すなら、コアとLucene.Net.Analysis.Kuromojiをセットで入れる必要がある。Nori(韓国語)は「TO BE ADDED WHEN RELEASED」コメントのままで、未提供である。

Facet、Grouping、Highlighterは検索UIに直結する部品だが、各パッケージの最小サンプルはDownload節には無い。Memoryは単一ドキュメントのインメモリ索引、Joinは正規化コンテンツの索引時/クエリ時結合、とREADMEが短く定義する。どれを足すかは、自前のスキーマがファセットやハイライトを必要とするかで決める。全部入れても、3.0.3と4.8.0を同一プロセスで混ぜる話にはならない。

./build 40分テストと_artifacts出力

READMEのBuilding and Testingは、コマンドライン、Visual Studio、Azure DevOpsの三経路である。コマンドラインの前提はPowerShell 5.0以上と.NET 8.0 SDK以上。Windowsではbuild [options]、LinuxまたはmacOSでは./build [options]。オプションには構成(Release/Debug)、最大並列ジョブ(既定8)、パッケージ版、テスト実行の有無、ファイル版がある。テストは並列8で通常約40分、成果物は/_artifacts/NuGetPackages/、とREADMEが書く。

評価だけなら./build のテスト無しオプション(既存手順では-RunTests false)で成果物だけ出す方が短い。40分のテストを省略した成功は、7800超のテストが自環境で通った証明にはならない。Visual Studio 2022以降ではLucene.Net.slnを開き、ターゲットフレームワークを選ぶ。Azure DevOpsはdev.azure.com/lucene-net/Lucene.NET/_build?definitionId=3のパイプラインで、新規作成と既存更新の手順がREADMEに分かれている。

ソースから直す理由は、NuGetの-Preでは足りないパッチを当てる場合か、CLIやデモを一緒にビルドする場合に限る。単なる採用評価なら、Install-Package Lucene.Net -Preの方がREADME Download節の入口に近い。/_artifacts/NuGetPackages/を社内フィードへ流す前に、タグLucene.Net_4_8_0_beta00018とパッケージ版文字列が一致するかを見る。

lucene-cli beta00015と版一致の制約

READMEはコマンドラインツールlucene-cliを挙げ、dotnet tool install lucene-cli -g --version 4.8.0-beta00015 を例にする。CLIの版は使うLucene.NETの版と一致させる必要がある、と明記している。GitHub上の新しいタグはbeta00018なので、例示のbeta00015をそのまま本番ツールチェーンに固定すると、ライブラリとCLIがずれる。インストール前に、使うNuGet版と同じ版のlucene-cliが存在するかを確認する。

lucene-cliはデモに加え、分割、マージ、セグメント一覧、修復、セグメント削除、アップグレードなど索引のメンテ操作を持つ、とREADMEが書く。実行前に索引をバックアップする、という注意もある。壊れた索引に修復を先にかける前に、バックアップが取れているかを見る。デモコードはLucene.Net.Demoプロジェクト。

Documentation節は、4.8.0の暫定文書がLucene.NETサイトにあり、APIがJava Lucene 4.8.0に近いのでそちらも参照できる、と書く。レガシーAPI文書は3.0.3と2.9.4向け。質問はメーリングリスト、バグはGitHub、PRはコントリビューションガイド、という分担である。CLIでセグメントを消す操作は、Java Luceneの運用知識が無いと危険なので、まずLucene.Net.Demoで索引の作成と検索だけを再現する方が安全である。

Lucene.Net.slnとAzure DevOps定義3

Visual Studio経路は2022以降、Lucene.Net.sln、ターゲットフレームワーク選択、がREADMEの骨子である。コマンドラインのPowerShell前提と違い、Windows上のIDE利用者向け。ソリューションを開いただけでは、NuGetの-Preと同じ成果になるとは限らず、ローカルのビルドオプション(構成、並列、テスト)を揃える必要がある。

Azure DevOpsは公式のビルド定義Id=3がREADMEバッジから辿れる。パイプライン未作成なら新規、既存なら更新、と手順が分岐する。自前のCIに乗せる場合でも、まずこの定義が何をビルドし、どのテストを回すかを見る方が、独自YAMLを一から書くよりずれが少ない。成功率や所要時間のSLAはREADME本文に無い。

How to Contribute節は、メーリングリスト参加、質問、バグ報告、議論、PR、とTOCに並ぶ。コードを足す前に、4.8.0-betaのAPIがJava Lucene 4.8.0側のどのクラスに対応するかを文書で確認する。移植特有の欠番(Noriが未提供、など)をissueで確認せずに、Javaサンプルを機械的にC#へ写すと、パッケージが存在しない地点で止まる。

Apache-2.0とbeta本番利用の境界

README上部はLICENSE.txt(github.com/apache/lucenenet/blob/master/LICENSE.txt)を指し、メタデータはApache-2.0。再配布と改変はLICENSE.txtの条件に従う。セキュリティ監査結果、脆弱性窓口、サポート契約はREADME本文に無い。

Status節の「一部の開発者はすでに本番で使っている」は自報である。Latest Release Versionが3.0.3のままである以上、4.8.0-betaを社内の唯一の検索基盤にする判断は、自前の索引テストと、betaタグの更新間隔(beta00016が2022年、00017が2024年、00018が2026年)を見てからになる。2年おきのベータは、毎週追従するライブラリではない。

3.0.3はFramework 3.5/4.0向けで、現行.NET 8にはSupported Frameworks節が4.8.0を割り当てている。古いFrameworkアプリを無理に4.8.0へ上げる話はREADMEに無い。逆に.NET 8の新規サービスへ3.0.3を入れる理由も、表からは出てこない。ライセンスはどちらも同じApache-2.0でも、サポートするTFMが違う。

Kuromoji自索引でbeta00018を固定する

評価の最短経路は、タグLucene.Net_4_8_0_beta00018を記録したうえで、Install-Package Lucene.Net -Pre と Lucene.Net.Analysis.Kuromoji を入れ、小さな日本語コーパスで索引と検索が返ることを見ることである。lucene-cliを使うなら、dotnet tool install の版をライブラリと一致させ、操作前に索引をコピーする。ソースから見る場合は、Linux/macOSなら./build、成果物は/_artifacts/NuGetPackages/。

7800超のテストとextremely stableはREADMEの自報なので、自環境の./buildでテストを回すかは、採用リスクの取り方次第である。約40分(並列8)かかる、と書いてある。Noriは未提供、SparkやElasticsearchの代替という位置づけもREADMEには無い。Java Lucene本体やElasticsearchをすでに運用しているチームが、.NETプロセス内に埋め込みたい場合にこの移植は意味がある。

向かないのは、正式版の番号だけが監査上必要な場合(そのときは3.0.3)、韓国語Noriが必須な場合、Java APIと完全一致を契約する場である。向くのは、.NET 6/8のアプリにKuromoji付きの埋め込み検索を足し、beta00018をアプリケーションのロックファイルに残せるチームである。

編集部の結論

.NETに全文検索を埋め込みたい開発者が、日本語解析まで含めて試す用途に合う。正式版だけが必要ならLatest Release Versionの3.0.3(.NET Framework 3.5/4.0)に留まる。先にInstall-Package Lucene.Net -PreとLucene.Net.Analysis.Kuromojiで自索引を作り、GitHubタグLucene.Net_4_8_0_beta00018(2026-06-22)を固定して判断する。7800超のテスト通過はREADMEの自報であり、4.8.0の正式リリース日は本文に無い。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート