10年前オープンソースプロジェクトに依存することは、ほとんどのWindows事業所では考えられないことだった。最近になって、.NETプログラマが Javaプラットフォームで立証され開発された、エンタープライズクラスソフトウェアの世界に目覚めている。ここで、全文検索エンジンである、Apache LuceneおよびLucene.Netを検討する。
Apache Lucene(リンク)とそのポートであるLucene.Net(リンク)は、 歴戦の製品であり、Wikipedia、CNETおよびMonster.comなどの有名なサイト(リンク)へ検索機能を提供するために使用されている。そうした理由から、それらの機能や未来は確かなものである。
Luceneは、巡回検索エンジンではないし、自動的にコンテンツを索引付けしない。索引付けされるドキュメントのテキストは、Luceneインデックスにロードされる前に抽出される必要がある。これをおこなう標準的なパターンは、Analyzerをインスタンス化し、IndexWriterをオープンし、1つづつ各ドキュメントを追加する。それが済むと、インデックスはクローズされ、変更がコミットされる前に、任意的に最適化される。おそらくこのプロセスは、デベロッパが慣れている以上に実践的であり、索引付けされるデータの柔軟性を提供する。
オブジェクトモデルを通じ、検索は実行される。代わりに、エンドユーザによって入力されるプレーンテキスト検索ストリングを解析し、実行することができる。.NET 3.5以降を使用した.NETデベロッパには、LINQ to Luceneという3つ目の選択肢もある。プロジェクトページは、Luceneの検索構文および対応するLINQ to Lucene(リンク)構文間のすばらしいマップがある。
試してみたいなら、Andrew Smith氏がIntroduction to Lucene.NET(リンク)を提供しているので、参考にするとよい。.NETやJavaバージョンを選ぼうが、Erik Hatcher氏のLucene Intro(リンク)も参考にするとよい。