GroupDocs.Search for .NET 26.10 هم‌اکنون در دسترس است. این یک انتشار اصلی است: فرمت ایندکس بازطراحی شده است، بنابراین ایندکس‌ها فضای کمتری روی دیسک می‌گیرند، نیمه‌حافظه RAM نیاز دارند و ۲ تا ۴ برابر سریع‌تر باز می‌شوند. جستجو، حذف، بهینه‌سازی و جستجوی تصویر چندین تا صدها برابر شتاب می‌گیرند، جستجوها دیگر برای ایندکس‌گذاری صبر نمی‌کنند و داده‌های ایندکس با چک‌سام‌ها و به‌روزرسانی‌های اتمیک محافظت می‌شوند.

ایندکس‌های موجود که توسط نسخه‌های 22.7–26.8 ایجاد شده‌اند، بدون ایندکس‌گذاری مجدد به فرمت جدید تبدیل می‌شوند. این انتشار شامل ۲۲ تغییر است: ۴ ویژگی جدید، ۱۵ بهبود و ۳ رفع اشکال.

نکات برجسته عملکرد

اکثر بهبودها با اندازه ایندکس و تعداد بخش‌های آن رشد می‌کند.

چه چیزی بهبود در 26.10
حافظه RAM مورد نیاز یک ایندکس بارگذاری‌شده ۲ برابر کمتر
باز کردن یک ایندکس ۲ تا ۴ برابر سریع‌تر
اندازه ایندکس روی دیسک به نسبت داده‌های ایندکس‌شده رشد می‌کند؛ هرچه ایندکس بزرگ‌تر باشد، صرفه‌جویی بیشتر است
جستجوی یک کلمه در ایندکس‌های بزرگ تا ۲ برابر سریع‌تر؛ کلمات نادر ۱۰ تا ۴۰ برابر سریع‌تر
جستجوی فازی در ایندکس‌های بزرگ ۲٫۵ تا ۵ برابر سریع‌تر
جستجوی wildcard در ایندکس‌های بزرگ ۲٫۵ تا ۳ برابر سریع‌تر
جستجوی wildcard، عبارات منظم، بازه عددی و جستجوی فازی به صورت تکه‌ای ۷ تا ۱۵۰ برابر سریع‌تر
جستجوی بازه تاریخی ۲ تا ۲۷ برابر سریع‌تر
حذف اسناد صدها برابر سریع‌تر، ۴ برابر کمتر حافظه، بدون فضای دیسک اضافی
بهینه‌سازی ایندکس ۴ برابر سریع‌تر، ۴ برابر کمتر حافظه
حداکثر RAM در طول ایندکس‌گذاری ۲ برابر کمتر
بازیابی متن ذخیره‌شده یک سند تا ۱۵ برابر سریع‌تر
داده‌های جستجوی تصویر ۲٫۹ برابر کمتر حافظه، بارگذاری ۶٫۶ برابر سریع‌تر، ذخیره‌سازی ۱۰۰ برابر سریع‌تر؛ جستجوی تصویر معکوس تا ۱٫۸ برابر سریع‌تر
جستجو در حالی که ایندکس در حال تغییر است دیگر مسدود نمی‌شود
قابلیت اطمینان ایندکس چک‌سام‌ها و تغییرات اتمیک؛ عملیات‌های قطع‌شده تکمیل یا بازگردانده می‌شوند
رشته‌های جستجو به‌صورت پیش‌فرض تمام هسته‌های پردازنده؛ می‌توان در هر زمان تغییر داد

چه چیزهای جدیدی در این انتشار وجود دارد

کلید خلاصه دسته‌بندی
SEARCHNET-3665 امکان تغییر تعداد رشته‌های جستجو در هر زمان را پیاده‌سازی کنید ویژگی
SEARCHNET-3666 گزینه‌ای برای جایگزینی کاراکترهای سورگیت بدون جفت پیاده‌سازی کنید ویژگی
SEARCHNET-3667 گزینه‌ای برای نادیده‌گیری واژه‌هایی که فقط از کاراکترهای ترکیبی تشکیل شده‌اند پیاده‌سازی کنید ویژگی
SEARCHNET-3668 به‌روزرسانی نسخه ایندکس به فرمت جدید بدون ایندکس‌گذاری مجدد اسناد را پیاده‌سازی کنید ویژگی
SEARCHNET-3669 بهینه‌سازی مصرف فضای دیسک یک ایندکس را پیاده‌سازی کنید بهبود
SEARCHNET-3670 بهینه‌سازی مصرف RAM یک ایندکس بارگذاری‌شده را پیاده‌سازی کنید بهبود
SEARCHNET-3671 بهینه‌سازی سرعت بارگذاری ایندکس را پیاده‌سازی کنید بهبود
SEARCHNET-3672 بهینه‌سازی سرعت جستجو در ایندکس‌های بزرگ را پیاده‌سازی کنید بهبود
SEARCHNET-3673 بهینه‌سازی جستجوی فازی را پیاده‌سازی کنید بهبود
SEARCHNET-3674 بهینه‌سازی جستجوی wildcard را پیاده‌سازی کنید بهبود
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 نیاز دارد و باز کردن ایندکس ۲ تا ۴ برابر سریع‌تر است.
  • داده‌های ایندکس با چک‌سام‌ها محافظت می‌شوند و تمام تغییرات به‌صورت اتمیک اعمال می‌شوند. اگر عملیاتی به‌دلیل خطا، قطع برق یا خاتمه فرآیند متوقف شود، ایندکس در وضعیت سازگار قبلی خود باقی می‌ماند.

جستجو

  • فقط بخش‌هایی که شامل واژه‌های پرس‌وجو هستند خوانده می‌شوند که سرعت جستجوی کلمه، فازی، wildcard و تکه‌ای را افزایش می‌دهد.
  • جستجو به‌صورت پیش‌فرض از تمام هسته‌های پردازنده استفاده می‌کند و تعداد رشته‌ها می‌تواند در هر زمان از طریق IndexSettings.SearchThreads تغییر یابد.
  • جستجوها و عملیات‌های تغییر ایندکس (ایندکس‌گذاری، به‌روزرسانی، حذف، ادغام، بهینه‌سازی) دیگر یکدیگر را مسدود نمی‌کنند. هر جستجو با یک snapshot سازگار از ایندکس کار می‌کند.

ایندکس‌گذاری و نگهداری

  • حذف اسناد دیگر ایندکس را بازنویسی نمی‌کند: اسناد بلافاصله از جستجو حذف می‌شوند و در طول بهینه‌سازی به‌صورت فیزیکی حذف می‌گردند.
  • بهینه‌سازی ایندکس ۴ برابر سریع‌تر است و ۴ برابر کمتر حافظه مصرف می‌کند؛ ایندکس‌های بسیار بزرگ به چندین بخش با اندازه محدود بهینه می‌شوند.
  • ایندکس‌گذاری حدود نصف حافظه RAM حداکثری مصرف می‌کند.

پردازش متن

  • حروف بزرگ/کوچک به‌صورت یکسان در .NET Framework و .NET پردازش می‌شوند، بنابراین نتایج جستجو به پلتفرم وابسته نیستند.
  • کاراکترهای سورگیت بدون جفت با U+FFFD جایگزین می‌شوند به‌جای حذف، و واژه‌هایی که فقط از کاراکترهای ترکیبی تشکیل شده‌اند دیگر ایندکس نمی‌شوند.

تغییرات API عمومی

دو ویژگی به کلاس GroupDocs.Search.IndexSettings اضافه شده‌اند:

  • Boolean ReplaceUnpairedSurrogates – کاراکترهای سورگیت UTF-16 بدون جفت را با کاراکتر جایگزین یونیکد (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، جستجو به تعداد هسته‌های پردازنده رشته استفاده می‌کند. برای محدود کردن تعداد رشته‌ها، ویژگی را به‌صورت صریح تنظیم کنید.
  • دو تنظیم جدید ایندکس به‌صورت پیش‌فرض فعال هستند. برای حفظ رفتار قبلی، قبل از ایجاد ایندکس 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

Direct download

منابع