GroupDocs.Search for .NET 26.10 が利用可能になりました。これは メジャーリリース です: インデックス形式が再設計され、インデックスは ディスク上の容量が少なく なり、RAM が半分 で済み、2〜4 倍速く 開くようになりました。検索、削除、最適化、画像検索は 数倍から数百倍 速くなり、検索はインデックス待ちがなくなり、インデックスデータはチェックサムとアトミック更新で保護されます。

バージョン 22.7–26.8 で作成された既存インデックスは 再インデックスせずに 新しい形式へ変換されます。本リリースには 22 の変更 が含まれます: 新機能 4、改善 15、修正 3。

パフォーマンスハイライト

ほとんどの改善はインデックスのサイズとセグメント数が大きくなるほど顕著です。

項目 26.10 の改善
ロードされたインデックスが必要とする RAM 2 倍少ない
インデックスのオープン 2〜4 倍速い
ディスク上のインデックスサイズ インデックスされたデータに比例して増加します。インデックスが大きいほど、節約効果が大きくなります
大規模インデックスでの単語検索 最大 2 倍速い; 稀な単語は 10〜40 倍速い
大規模インデックスでのあいまい検索 2.5〜5 倍速い
大規模インデックスでのワイルドカード検索 2.5〜3 倍速い
チャンク単位のワイルドカード、正規表現、数値範囲、あいまい検索 7〜150 倍速い
日付範囲検索 2〜27 倍速い
ドキュメントの削除 数百倍速い、メモリは 4 倍少なく、追加のディスク容量は不要
インデックス最適化 4 倍速い、メモリは 4 倍少ない
インデックス作成中の最大 RAM 使用量 2 倍少ない
ドキュメントの保存テキスト取得 最大 15 倍速い
画像検索データ メモリが 2.9 倍少ない、ロードは 6.6 倍速く、保存は 100 倍速い;逆画像検索は最大 1.8 倍速い
インデックスが変更中でも検索可能 ブロックされなくなった
インデックスの信頼性 チェックサムとアトミックな変更;中断された操作は完了するかロールバックされます
検索スレッド デフォルトで全プロセッサコア使用;任意のタイミングで変更可能

本リリースの新機能

キー 概要 カテゴリ
SEARCHNET-3665 検索スレッド数を任意のタイミングで変更できる機能を実装 機能
SEARCHNET-3666 ペアになっていないサロゲート文字を置換するオプションを実装 機能
SEARCHNET-3667 混合文字のみで構成された語句をスキップするオプションを実装 機能
SEARCHNET-3668 ドキュメントを再インデックスせずにインデックスバージョンを新しい形式へ更新する機能を実装 機能
SEARCHNET-3669 インデックスのディスク容量使用量の最適化を実装 改善
SEARCHNET-3670 ロードされたインデックスの RAM 使用量の最適化を実装 改善
SEARCHNET-3671 インデックス読み込み速度の最適化を実装 改善
SEARCHNET-3672 大規模インデックスでの検索速度の最適化を実装 改善
SEARCHNET-3673 あいまい検索の最適化を実装 改善
SEARCHNET-3674 ワイルドカード検索の最適化を実装 改善
SEARCHNET-3675 ドキュメントの削除および更新の最適化を実装 改善
SEARCHNET-3676 インデックス最適化操作の最適化を実装 改善
SEARCHNET-3677 インデックスが変更中でも検索を許可 改善
SEARCHNET-3678 インデックスの信頼性を向上 改善
SEARCHNET-3679 インデックス作成中のメモリ使用量の最適化を実装 改善
SEARCHNET-3680 ドキュメントテキスト取得の最適化を実装 改善
SEARCHNET-3681 画像検索の最適化を実装 改善
SEARCHNET-3682 全プラットフォームで文字ケースを同一に扱う実装 改善
SEARCHNET-3688 チャンク単位検索の最適化を実装 改善
SEARCHNET-3683 検索スレッドのデフォルト数を修正 修正
SEARCHNET-3684 語句辞書変更後のインデックス不整合を防止 修正
SEARCHNET-3685 テキスト処理が異なるインデックスのマージを防止 修正

主な機能

インデックスの保存と信頼性

  • インデックスサイズはインデックスされたデータに比例して増加するようになり、セグメントが多数ある大規模インデックスほど多くの容量を節約できます。
  • ロードされたインデックスは RAM が半分で済み、インデックスのオープンは 2〜4 倍速くなります。
  • インデックスデータはチェックサムで保護され、すべての変更はアトミックに適用されます。エラー、電源障害、プロセス終了で操作が中断された場合でも、インデックスは以前の一貫した状態のままです。

検索

  • クエリ語句を含むセグメントだけが読み込まれるため、単語検索、あいまい検索、ワイルドカード検索、チャンク検索が高速化されます。
  • 検索はデフォルトで全プロセッサコアを使用し、スレッド数は IndexSettings.SearchThreads で任意のタイミングで変更可能です。
  • 検索とインデックス変更操作(インデックス作成、更新、削除、マージ、最適化)は互いにブロックしなくなりました。各検索はインデックスの一貫したスナップショットで実行されます。

インデックス作成と保守

  • ドキュメントの削除はインデックスを書き換えず、検索から即座に除外され、最適化時に物理的に削除されます。
  • インデックス最適化は 4 倍速く、メモリは 4 倍少なくなります。非常に大きなインデックスはサイズ制限された複数のセグメントに最適化されます。
  • インデックス作成時の最大 RAM 使用量は約半分です。

テキスト処理

  • .NET Framework と .NET で文字ケースの扱いが同一になるため、検索結果はプラットフォームに依存しません。
  • ペアになっていないサロゲート文字は削除されず U+FFFD に置換され、混合文字のみで構成された語句はインデックスされなくなります。

パブリック API の変更

GroupDocs.Search.IndexSettings クラスに 2 つのプロパティが追加されました:

  • Boolean ReplaceUnpairedSurrogates – ペアになっていない UTF-16 サロゲート文字を Unicode 置換文字 (U+FFFD) に置換します。デフォルトで有効です。
  • Boolean SkipBlendedOnlyTerms – 混合文字のみで構成された語句をインデックスから除外します。デフォルトで有効です。

これらの設定はインデックス作成時に固定されます。

コード例

以下の例は、以前のバージョンで作成されたインデックスを再インデックスせずに新しいインデックス形式へ更新します。

string sourceIndexFolder = @"c:\MyOldIndex\"; // Specify path to the index of a previous version
string targetIndexFolder = @"c:\MyNewIndex\"; // Specify path to the folder for the updated index

IndexUpdater updater = new IndexUpdater(); // Creating an index updater

if (updater.CanUpdateVersion(sourceIndexFolder)) // Checking whether the index version can be updated
{
    VersionUpdateResult result = updater.UpdateVersion(sourceIndexFolder, targetIndexFolder); // Updating the index version; the source index is not changed
}

アップグレード時の注意点

以前のバージョンからアップグレードする際は、以下の変更点に留意してください:

  • インデックス形式が変更されました。 以前のバージョンのインデックスは IndexUpdater クラスで変換してから開く必要があります。元のドキュメントは不要で、変換されたインデックスは別フォルダーに保存され、元インデックスは変更されません。
  • 語句辞書はインデックスにドキュメントが含まれると固定されます。 アルファベット、トークン化辞書、文字置換、ストップワード、および UseStopWords と UseCharacterReplacements 設定は最初のドキュメントをインデックスする前に構成する必要があります。後から変更すると InvalidOperationException がスローされます。
  • 互換性のないインデックスはマージされません。 結合するインデックスがテキストを異なる語句に分割している場合、Index.Merge は InvalidOperationException をスローします。
  • 検索はデフォルトでマルチスレッドです。 デフォルトの IndexSettings.SearchThreads では、プロセッサコア数と同数のスレッドが使用されます。スレッド数を制限するには、プロパティを明示的に設定してください。
  • 2 つの新しいインデックス設定がデフォルトで有効です。 以前の動作を維持するには、インデックス作成前に ReplaceUnpairedSurrogates と SkipBlendedOnlyTerms を false に設定してください。
  • 削除されたドキュメントは最適化時に物理的に削除されます。 スペースを回復するには Index.Optimize を呼び出してください。
  • チャンク数が変更されました。 チャンク検索はセグメントごとにチャンクを返さなくなりました。セグメント数に依存せず、SearchResult.NextChunkSearchToken が null でない間チャンクを反復処理してください。

更新の取得方法

NuGet

  • NuGet – 最新パッケージをインストール:
# Package Manager
NuGet\Install-Package GroupDocs.Search -Version 26.10.0

# .NET CLI
dotnet add package GroupDocs.Search --version 26.10.0
# Package Manager
NuGet\Install-Package GroupDocs.Search.NETFramework -Version 26.10.0

# .NET CLI
dotnet add package GroupDocs.Search.NETFramework --version 26.10.0

直接ダウンロード

リソース