GroupDocs.Search for .NET 26.10 พร้อมให้ใช้งานแล้ว. นี่คือ การปล่อยเวอร์ชันหลัก: รูปแบบดัชนีได้รับการออกแบบใหม่ ทำให้ดัชนีใช้ พื้นที่บนดิสก์น้อยลง, ต้องการ RAM ครึ่งหนึ่ง และเปิด เร็วขึ้น 2 ถึง 4 เท่า. การค้นหา, การลบ, การปรับประสิทธิภาพและการค้นหาภาพเร็วขึ้น หลายเท่าไปจนถึงหลายร้อยเท่า, การค้นหาไม่ต้องรอการทำดัชนีอีกต่อไป, และข้อมูลดัชนีได้รับการปกป้องด้วย checksum และการอัปเดตแบบ atomic.

ดัชนีที่มีอยู่ที่สร้างโดยเวอร์ชัน 22.7–26.8 จะถูกแปลงเป็นรูปแบบใหม่ โดยไม่ต้องทำดัชนีใหม่. การปล่อยนี้มี การเปลี่ยนแปลง 22 รายการ: 4 ฟีเจอร์ใหม่, 15 การปรับปรุงและ 3 การแก้ไข.

ไฮไลท์ด้านประสิทธิภาพ

ส่วนใหญ่ของการเพิ่มประสิทธิภาพจะเพิ่มขึ้นตามขนาดของดัชนีและจำนวนเซกเมนต์ของมัน.

สิ่งที่วัด การเพิ่มประสิทธิภาพใน 26.10
RAM ที่ต้องใช้โดยดัชนีที่โหลดแล้ว น้อยลง 2 เท่า
การเปิดดัชนี เร็วขึ้น 2 ถึง 4 เท่า
ขนาดดัชนีบนดิสก์ เพิ่มตามสัดส่วนของข้อมูลที่ทำดัชนี; ดัชนีที่ใหญ่ขึ้นจะประหยัดพื้นที่มากขึ้น
การค้นหาคำในดัชนีขนาดใหญ่ เร็วขึ้นสูงสุด 2 เท่า; คำหายาก เร็วขึ้น 10 ถึง 40 เท่า
การค้นหาแบบ fuzzy ในดัชนีขนาดใหญ่ เร็วขึ้น 2.5 ถึง 5 เท่า
การค้นหาแบบ wildcard ในดัชนีขนาดใหญ่ เร็วขึ้น 2.5 ถึง 3 เท่า
การค้นหา wildcard, regular expression, numeric range และ fuzzy แบบแบ่งชั้น เร็วขึ้น 7 ถึง 150 เท่า
การค้นหาแบบช่วงวันที่ เร็วขึ้น 2 ถึง 27 เท่า
การลบเอกสาร เร็วขึ้นหลายร้อยเท่า, ใช้ RAM น้อยลง 4 เท่า, ไม่ต้องใช้พื้นที่ดิสก์เพิ่มเติม
การปรับประสิทธิภาพดัชนี เร็วขึ้น 4 เท่า, ใช้ RAM น้อยลง 4 เท่า
RAM สูงสุดระหว่างทำดัชนี น้อยลง 2 เท่า
การดึงข้อความที่เก็บไว้ของเอกสาร เร็วขึ้นสูงสุด 15 เท่า
ข้อมูลการค้นหาภาพ ใช้หน่วยความจำน้อยลง 2.9 เท่า, โหลดเร็วขึ้น 6.6 เท่า, บันทึกเร็วขึ้น 100 เท่า; การค้นหาภาพย้อนกลับเร็วขึ้นสูงสุด 1.8 เท่า
การค้นหาในขณะที่ดัชนีกำลังถูกแก้ไข ไม่บล็อกอีกต่อไป
ความน่าเชื่อถือของดัชนี Checksum และการเปลี่ยนแปลงแบบ atomic; การทำงานที่ถูกขัดจังหวะจะเสร็จสมบูรณ์หรือย้อนกลับ
เธรดการค้นหา ใช้ทุกคอร์ของโปรเซสเซอร์โดยค่าเริ่มต้น; สามารถเปลี่ยนแปลงได้ตลอดเวลา

สิ่งใหม่ในเวอร์ชันนี้

คีย์ สรุป ประเภท
SEARCHNET-3665 Implement the ability to change the number of search threads at any time ฟีเจอร์
SEARCHNET-3666 Implement an option to replace unpaired surrogate characters ฟีเจอร์
SEARCHNET-3667 Implement an option to skip terms consisting only of blended characters ฟีเจอร์
SEARCHNET-3668 Implement index version update to the new index format without reindexing the documents ฟีเจอร์
SEARCHNET-3669 Implement optimization of disk space consumption of an index การปรับปรุง
SEARCHNET-3670 Implement optimization of RAM consumption of a loaded index การปรับปรุง
SEARCHNET-3671 Implement optimization of index loading speed การปรับปรุง
SEARCHNET-3672 Implement optimization of search speed in large indexes การปรับปรุง
SEARCHNET-3673 Implement optimization of fuzzy search การปรับปรุง
SEARCHNET-3674 Implement optimization of wildcard search การปรับปรุง
SEARCHNET-3675 Implement optimization of deleting and updating documents การปรับปรุง
SEARCHNET-3676 Implement optimization of the index optimization operation การปรับปรุง
SEARCHNET-3677 Allow searching while the index is being modified การปรับปรุง
SEARCHNET-3678 Improve index reliability การปรับปรุง
SEARCHNET-3679 Implement optimization of memory usage during indexing การปรับปรุง
SEARCHNET-3680 Implement optimization of retrieving document text การปรับปรุง
SEARCHNET-3681 Implement optimization of image search การปรับปรุง
SEARCHNET-3682 Implement handling letter case identically on all platforms การปรับปรุง
SEARCHNET-3688 Implement optimization of search by chunks การปรับปรุง
SEARCHNET-3683 Fix the default number of search threads แก้ไข
SEARCHNET-3684 Prevent inconsistent indexing after changing term dictionaries แก้ไข
SEARCHNET-3685 Prevent merging indexes that process text differently แก้ไข

คุณลักษณะหลัก

การจัดเก็บดัชนีและความน่าเชื่อถือ

  • ขนาดดัชนีตอนนี้เพิ่มตามสัดส่วนของข้อมูลที่ทำดัชนี, ดังนั้นดัชนีขนาดใหญ่ที่มีหลายเซกเมนต์จะประหยัดพื้นที่มากที่สุด.
  • ดัชนีที่โหลดแล้วต้องการ RAM ครึ่งหนึ่ง, และการเปิดดัชนีเร็วขึ้น 2 ถึง 4 เท่า.
  • ข้อมูลดัชนีได้รับการปกป้องด้วย checksum, และการเปลี่ยนแปลงทั้งหมดจะทำแบบ atomic. หากการทำงานถูกขัดจังหวะโดยข้อผิดพลาด, การดับไฟหรือการยุติกระบวนการ, ดัชนีจะคงอยู่ในสถานะที่สอดคล้องก่อนหน้า.

การค้นหา

  • จะอ่านเฉพาะเซกเมนต์ที่มีคำค้นหา, ทำให้การค้นหาคำ, fuzzy, wildcard และการค้นหาแบบแบ่งชั้นเร็วขึ้น.
  • การค้นหาใช้ทุกคอร์ของโปรเซสเซอร์โดยค่าเริ่มต้น, และจำนวนเธรดสามารถเปลี่ยนได้ตลอดเวลาผ่าน IndexSettings.SearchThreads.
  • การค้นหาและการทำงานที่แก้ไขดัชนี (ทำดัชนี, อัปเดต, ลบ, ผสาน, ปรับประสิทธิภาพ) ไม่บล็อกกันอีกต่อไป. การค้นหาแต่ละครั้งทำงานกับสแนปชอตของดัชนีที่สอดคล้องกัน.

การทำดัชนีและการบำรุงรักษา

  • การลบเอกสารไม่ต้องเขียนดัชนีใหม่อีก: เอกสารถูกยกเว้นจากการค้นหาโดยทันทีและจะถูกลบออกทางกายภาพระหว่างการปรับประสิทธิภาพ.
  • การปรับประสิทธิภาพดัชนีเร็วขึ้น 4 เท่าและใช้ RAM น้อยลง 4 เท่า; ดัชนีขนาดใหญ่มากจะถูกปรับเป็นหลายเซกเมนต์ที่มีขนาดจำกัด.
  • การทำดัชนีใช้ RAM สูงสุดประมาณครึ่งหนึ่งของเดิม.

การประมวลผลข้อความ

  • การจัดการตัวอักษรพิมพ์ใหญ่/เล็กทำแบบเดียวกันบน .NET Framework และ .NET, ดังนั้นผลลัพธ์การค้นหาไม่ขึ้นกับแพลตฟอร์ม.
  • ตัวอักษร surrogate ที่ไม่มีคู่จะถูกแทนด้วย U+FFFD แทนการลบ, และคำที่ประกอบด้วยอักขระผสมอย่างเดียวจะไม่ถูกทำดัชนีอีกต่อไป.

การเปลี่ยนแปลง API สาธารณะ

ได้เพิ่มคุณสมบัติสองอย่างในคลาส GroupDocs.Search.IndexSettings:

  • Boolean ReplaceUnpairedSurrogates – แทนที่อักขระ surrogate 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 เริ่มต้น, การค้นหาใช้จำนวนเธรดเท่ากับจำนวนคอร์ของโปรเซสเซอร์. หากต้องการจำกัดจำนวนเธรด, ตั้งค่าคุณสมบัตินี้โดยตรง.
  • การตั้งค่าดัชนีใหม่สองอย่างเปิดใช้งานโดยค่าเริ่มต้น. หากต้องการรักษาพฤติกรรมเดิม, ตั้งค่า 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

ดาวน์โหลดโดยตรง

แหล่งข้อมูล