GroupDocs.Search for .NET 26.10 artık kullanılabilir. Bu bir büyük sürüm: indeks formatı yeniden tasarlandı, bu sayede indeksler daha az disk alanı kullanıyor, RAM’in yarısı kadar gerektiriyor ve 2 ila 4 kat daha hızlı açılıyor. Arama, silme, optimizasyon ve görüntü araması birkaç ila yüzlerce kat hızlandırıldı, aramalar artık indekslemeyi beklemiyor ve indeks verileri denetim toplamları ve atomik güncellemelerle korunuyor.

22.7–26.8 sürümleriyle oluşturulan mevcut indeksler, yeni formata yeniden indeksleme yapmadan dönüştürülür. Bu sürüm 22 değişiklik içerir: 4 yeni özellik, 15 iyileştirme ve 3 düzeltme.

Performans özetleri

Çoğu kazanç, indeksin boyutu ve segment sayısı arttıkça artar.

Ne 26.10’daki Kazanç
Yüklenmiş bir indeks için gereken RAM 2 kat daha az
Bir indeksi açma 2 ila 4 kat daha hızlı
Disk üzerindeki indeks boyutu İndekslenen veriye orantılı olarak büyür; indeks ne kadar büyükse tasarruf o kadar fazla olur
Büyük indekslerde kelime arama 2 kata kadar daha hızlı; nadir kelimeler 10 ila 40 kat daha hızlı
Büyük indekslerde bulanık arama 2,5 ila 5 kat daha hızlı
Büyük indekslerde joker karakter araması 2,5 ila 3 kat daha hızlı
Joker karakter, düzenli ifade, sayısal aralık ve parçalı bulanık arama 7 ila 150 kat daha hızlı
Tarih aralığı araması 2 ila 27 kat daha hızlı
Belgeleri silme Yüzlerce kat daha hızlı, 4 kat daha az bellek, ek disk alanı yok
İndeks optimizasyonu 4 kat daha hızlı, 4 kat daha az bellek
İndeksleme sırasında en yüksek RAM 2 kat daha az
Bir belgenin saklanan metnini alma 15 kata kadar daha hızlı
Görüntü arama verileri 2,9 kat daha az bellek, yükleme 6,6 kat daha hızlı, kaydetme 100 kat daha hızlı; ters görüntü araması 1,8 kata kadar daha hızlı
İndeks değiştirildiği sırada arama Artık engellenmiyor
İndeks güvenilirliği Denetim toplamları ve atomik değişiklikler; kesintiye uğrayan işlemler tamamlanır veya geri alınır
Arama iş parçacıkları Varsayılan olarak tüm işlemci çekirdekleri; istediğiniz zaman değiştirilebilir

Bu sürümde yenilikler

Anahtar Özet Kategori
SEARCHNET-3665 Arama iş parçacığı sayısını istediğiniz zaman değiştirme yeteneğini uygulayın Özellik
SEARCHNET-3666 Eşleşmemiş surrogate karakterleri değiştirme seçeneğini uygulayın Özellik
SEARCHNET-3667 Yalnızca karışık karakterlerden oluşan terimleri atlama seçeneğini uygulayın Özellik
SEARCHNET-3668 Belgeleri yeniden indekslemeden indeks sürümünü yeni indeks formatına güncellemeyi uygulayın Özellik
SEARCHNET-3669 Bir indeksin disk alanı tüketimini optimize etmeyi uygulayın İyileştirme
SEARCHNET-3670 Yüklenmiş bir indeksin RAM tüketimini optimize etmeyi uygulayın İyileştirme
SEARCHNET-3671 İndeks yükleme hızını optimize etmeyi uygulayın İyileştirme
SEARCHNET-3672 Büyük indekslerde arama hızını optimize etmeyi uygulayın İyileştirme
SEARCHNET-3673 Bulanık aramayı optimize etmeyi uygulayın İyileştirme
SEARCHNET-3674 Joker karakter aramasını optimize etmeyi uygulayın İyileştirme
SEARCHNET-3675 Belgeleri silme ve güncelleme işlemlerini optimize etmeyi uygulayın İyileştirme
SEARCHNET-3676 İndeks optimizasyon işlemini optimize etmeyi uygulayın İyileştirme
SEARCHNET-3677 İndeks değiştirildiği sırada aramaya izin ver İyileştirme
SEARCHNET-3678 İndeks güvenilirliğini iyileştir İyileştirme
SEARCHNET-3679 İndeksleme sırasında bellek kullanımını optimize etmeyi uygulayın İyileştirme
SEARCHNET-3680 Belge metnini almayı optimize etmeyi uygulayın İyileştirme
SEARCHNET-3681 Görüntü aramayı optimize etmeyi uygulayın İyileştirme
SEARCHNET-3682 Tüm platformlarda harf durumunu aynı şekilde ele almayı uygulayın İyileştirme
SEARCHNET-3688 Parçalı aramayı optimize etmeyi uygulayın İyileştirme
SEARCHNET-3683 Varsayılan arama iş parçacığı sayısını düzelt Düzeltme
SEARCHNET-3684 Terim sözlükleri değiştirildikten sonra tutarsız indekslemeyi önle Düzeltme
SEARCHNET-3685 Metni farklı işleyen indekslerin birleştirilmesini önle Düzeltme

Önemli özellikler

İndeks depolama ve güvenilirlik

  • İndeks boyutu artık indekslenen veriye orantılı olarak büyür, bu yüzden birçok segmente sahip büyük indeksler en fazla alan tasarrufu sağlar.
  • Yüklenmiş bir indeks RAM’in yarısı kadar gerektirir ve bir indeksi açmak 2 ila 4 kat daha hızlıdır.
  • İndeks verileri denetim toplamlarıyla korunur ve tüm değişiklikler atomik olarak uygulanır. Bir işlem bir hata, güç kesintisi veya süreç sonlandırmasıyla kesintiye uğrarsa, indeks önceki tutarlı durumunda kalır.

Arama

  • Sadece sorgu terimlerini içeren segmentler okunur, bu da kelime, bulanık, joker karakter ve parçalı aramaları hızlandırır.
  • Arama varsayılan olarak tüm işlemci çekirdeklerini kullanır ve iş parçacığı sayısı IndexSettings.SearchThreads aracılığıyla istediğiniz zaman değiştirilebilir.
  • Aramalar ve indeks değiştiren işlemler (indeksleme, güncelleme, silme, birleştirme, optimizasyon) artık birbirini engellemez. Her arama, indeksin tutarlı bir anlık görüntüsüyle çalışır.

İndeksleme ve bakım

  • Belgeleri silmek artık indeksi yeniden yazmaz: belgeler hemen aramadan çıkarılır ve optimizasyon sırasında fiziksel olarak kaldırılır.
  • İndeks optimizasyonu 4 kat daha hızlıdır ve 4 kat daha az bellek kullanır; çok büyük indeksler sınırlı boyutta birkaç segmente optimize edilir.
  • İndeksleme, en yüksek RAM tüketimini yaklaşık yarıya düşürür.

Metin işleme

  • Harf durumu .NET Framework ve .NET üzerinde aynı şekilde ele alınır, bu yüzden arama sonuçları platforma bağlı değildir.
  • Eşleşmemiş surrogate karakterler kaldırılmak yerine U+FFFD ile değiştirilir ve yalnızca karışık karakterlerden oluşan terimler artık indekslenmez.

Genel API değişiklikleri

GroupDocs.Search.IndexSettings sınıfına iki özellik eklendi:

  • Boolean ReplaceUnpairedSurrogates – eşleşmemiş UTF-16 surrogate karakterlerini Unicode değiştirme karakteri (U+FFFD) ile değiştirir. Varsayılan olarak etkindir.
  • Boolean SkipBlendedOnlyTerms – yalnızca karışık karakterlerden oluşan terimleri indekslemeden hariç tutar. Varsayılan olarak etkindir.

Her iki ayar da bir indeks oluşturulduğunda sabitlenir.

Kod örneği

İşte aşağıdaki örnek, önceki bir sürümle oluşturulmuş bir indeksi yeni indeks formatına belgeleri yeniden indekslemeden günceller.

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
}

Yükseltme notları

Önceki bir sürümden yükseltirken aşağıdaki değişiklikleri göz önünde bulundurun:

  • İndeks formatı değişti. Önceki sürümlerin indeksleri, açılmadan önce IndexUpdater sınıfı ile dönüştürülmelidir. Kaynak belgeler gerekmez, dönüştürülmüş indeks farklı bir klasöre kaydedilir ve kaynak indeks değiştirilmez.
  • Terim sözlükleri, bir indeks belge içerdiğinde sabitlenir. Alfabe, tokenizasyon sözlüğü, karakter değişiklikleri, durdurma kelimeleri ve UseStopWords ile UseCharacterReplacements ayarları ilk belge indekslenmeden önce yapılandırılmalıdır. Daha sonraki bir değişiklik InvalidOperationException hatası fırlatır.
  • Uyumsuz indeksler birleştirilmez. Birleştirilen indeksler metni farklı şekilde terimlere ayırıyorsa Index.Merge InvalidOperationException fırlatır.
  • Arama varsayılan olarak çok iş parçacıklı. Varsayılan IndexSettings.SearchThreads ile arama, işlemci çekirdek sayısı kadar iş parçacığı kullanır. İş parçacığı sayısını sınırlamak için özelliği açıkça ayarlayın.
  • İki yeni indeks ayarı varsayılan olarak etkindir. Önceki davranışı korumak için, bir indeks oluşturmadan önce ReplaceUnpairedSurrogates ve SkipBlendedOnlyTerms değerlerini false olarak ayarlayın.
  • Silinen belgeler optimizasyon sırasında fiziksel olarak kaldırılır. Alanı geri kazanmak için Index.Optimize çağırın.
  • Parça sayısı değişti. Parçalı arama artık her segment için bir parça döndürmez. Segment sayısına güvenmek yerine SearchResult.NextChunkSearchToken null olmadığı sürece parçalar üzerinde yineleme yapın.

Güncellemeyi nasıl alabilirsiniz

NuGet

  • NuGet – En son paketi kurun:
# 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

Doğrudan indirme

Kaynaklar