スケーラブルな全文検索のための分散Lucene
Apache Luceneは、元々Javaで記述されていたが、.NETにも移植された、非常に人気のある無料のオープンソース全文検索エンジンです。 Luceneは、全文検索を実行するためにアプリケーションが埋め込むスタンドアロンのライブラリです。
NCache Lucene APIは、インメモリ分散キャッシュ(分散Luceneという名前)を介してネイティブ形式で.NETに実装されています。 これにより、スタンドアロンのLuceneが、.NET/用の非常に高速で線形にスケーラブルな全文検索ソリューションに変わりました。 .NET Core アプリケーション。 また、ネイティブのLucene APIにより、.NETLuceneアプリケーションで使用するためにコードを変更する必要はありません。 NCache.
クライアント側では、 NCache .NETアプリケーションにネイティブのLucene.NETAPIを提供するため、アプリケーションのコードを変更する必要はありません。 そして、バックエンドでは、 NCache 同じLucene.NETを使用して分散環境でインデックスを作成し、後で分散方式で全文検索を実行します。 これらの分散検索の結果は、アプリケーションに表示される前にマージされます。
ネイティブLuceneAPI
分散Luceneと NCache ネイティブのLuceneAPIを提供します。 その結果、次のようなメリットがあります。
- - コード変更なし: Distributed Luceneを使用するために、Luceneアプリケーションにコードを変更する必要はありません。 プロバイダーを次のように変更するだけです NCache.
- - 業界標準API: アプリケーションでLuceneを使用することにより、業界で最も人気のある全文検索APIに固執することになります。
非常に高速で直線的にスケーラブル
分散Luceneは、次の理由で非常に高速でスケーラブルです。
- - インメモリ(高速): 分散Luceneは上に構築されています NCache これは、インメモリ分散データストアです。 その結果、Distributed Luceneもメモリ内にあるため、非常に高速です。
- - パーティション化されたLuceneインデックス: スケーラビリティーを提供するために、Luceneインデックスはクラスター内のすべてのサーバーに分割されます。 このように、クラスターにサーバーを追加すると、Luceneインデックスは自動的に再パーティション化され、 redisを使用してインテリジェントな方法で貢献 NCache パーティション-レプリカキャッシュ トポロジー。
- - 並列検索: Luceneインデックスはパーティション化されているため、アプリケーションが全文検索クエリを発行すると、DistributedLuceneはそれをクラスター内のすべてのサーバーに送信します。 そして、このようにして、クエリは複数のサーバー間で並行して実行されます。 次に、これらすべての並列クエリの結果がマージされてから、アプリケーションに戻ります。
- - 実行時にクラスターからサーバーを追加/削除します。 サーバーを追加できます NCache アプリケーションを停止したり、Luceneインデックスを再構築したりせずに、実行時にクラスター化します。 Luceneインデックスは自動的に redis中断することなく、クラスター内のすべてのサーバーに提供されます。
- - 実行時にLuceneインデックスを拡張する Luceneインデックス全体を停止または再構築することなく、実行時にLuceneインデックスにアイテムを追加できます。
高可用性
この領域でのDistributedLuceneのハイライトは次のとおりです。
- - 複製されたLuceneインデックス: Luceneインデックスは、クラスター内のすべてのサーバーに分割されます。 次に、各パーティションは、を使用してクラスター内の異なるサーバーに複製されます。 パーティション-レプリカキャッシュ トポロジ NCache。 これにより高可用性が確保されるため、サーバーがダウンした場合でも、このパーティションのレプリカが中断することなく自動的に利用可能になります。
- - NCache クラスターは動的です: このクラスターの動的な性質 つまり、XNUMX台のサーバーがダウンした場合、クラスターはXNUMX台少ないサーバーで動作するように自動的に調整されます。 そして、これはすべて中断することなく行われます。 同様に、実行時にサーバーの数を増やす必要がある場合、クラスターは中断することなく自動的にサーバーをクラスターに追加します。
- - Luceneインデックスの永続化/リロード: Luceneインデックス全体をディスクに永続化できます。 このように、全体をダウンさせる必要がある場合 NCache メンテナンスのためにクラスターを作成すると、カスタムプログラミングを行わなくても、クラスターをすばやく再起動してLuceneインデックス全体を再ロードできます。
- - Luceneインデックスの自動ロード: キャッシュローダー の特徴 NCache クラスターの起動時にデータソースからドキュメントまたはデータをロードし、インデックスを構築するためのカスタムコードを記述します。
次はどうする?