ดูเหมือนคำถามของคุณเกี่ยวกับการรวมดัชนีมากกว่าการสร้างดัชนี
กระบวนการจัดทำดัชนีนั้นค่อนข้างง่ายหากคุณละเลยรายละเอียดระดับต่ำ Lucene สร้างสิ่งที่เรียกว่า "ดัชนีกลับด้าน" จากเอกสาร ดังนั้นหากเอกสารที่มีข้อความ "To be or not to" และ id = 1 เข้ามาดัชนีกลับด้านจะมีลักษณะดังนี้:
[to] → 1
[be] → 1
[or] → 1
[not] → 1
โดยพื้นฐานแล้ว - ดัชนีจากคำไปยังรายการเอกสารที่มีคำที่กำหนด แต่ละบรรทัดของดัชนีนี้ (คำ) เรียกว่ารายการโพสต์ ดัชนีนี้คงอยู่ในการจัดเก็บระยะยาวแล้ว
ในความเป็นจริงสิ่งต่าง ๆ มีความซับซ้อนมากขึ้น:
- Lucene อาจข้ามบางคำตามตัววิเคราะห์ที่ระบุ
- คำสามารถถูกประมวลผลล่วงหน้าโดยใช้อัลกอริธึมการแยกคำเพื่อลดความยืดหยุ่นของภาษา
- รายการการโพสต์ไม่ได้มีเพียงตัวระบุของเอกสารเท่านั้น แต่ยังรวมถึงคำที่ระบุไว้ในเอกสาร (อาจมีหลายอินสแตนซ์) และข้อมูลเพิ่มเติมอื่น ๆ
มีภาวะแทรกซ้อนอื่น ๆ อีกมากมายซึ่งไม่สำคัญสำหรับความเข้าใจพื้นฐาน
มันเป็นสิ่งสำคัญที่จะเข้าใจว่าที่ดัชนี Lucene คือผนวกเท่านั้น ในบางช่วงเวลาแอปพลิเคชันตัดสินใจที่จะยอมรับ (เผยแพร่) การเปลี่ยนแปลงทั้งหมดในดัชนี Lucene ดำเนินการบริการทั้งหมดด้วยดัชนีและปิดเพื่อให้สามารถค้นหาได้ หลังจากกระทำดัชนีโดยทั่วไปไม่เปลี่ยนรูป ดัชนีนี้ (หรือส่วนดัชนี) เรียกว่าส่วน เมื่อ Lucene ดำเนินการค้นหาสำหรับข้อความค้นหาจะค้นหาในส่วนที่มีทั้งหมด
จึงเกิดคำถามขึ้น - เราจะเปลี่ยนเอกสารที่ทำดัชนีแล้วได้อย่างไร?
เอกสารใหม่หรือรุ่นใหม่ของเอกสารที่จัดทำดัชนีแล้วมีการจัดทำดัชนีในกลุ่มใหม่และรุ่นเก่าไม่ถูกต้องในส่วนที่ก่อนหน้านี้ใช้เรียกว่ารายการฆ่า รายการฆ่าเป็นเพียงส่วนเดียวของดัชนีที่มุ่งมั่นซึ่งสามารถเปลี่ยนแปลงได้ อย่างที่คุณอาจเดาได้ว่าประสิทธิภาพของดัชนีจะลดลงตามเวลาเนื่องจากดัชนีเก่าอาจมีเอกสารที่ถูกลบออกเป็นส่วนใหญ่
นี่คือจุดที่การรวมเข้ามาการรวม - คือกระบวนการรวมดัชนีหลายตัวเพื่อสร้างดัชนีโดยรวมที่มีประสิทธิภาพมากขึ้น สิ่งที่เกิดขึ้นโดยทั่วไประหว่างการผสานคือเอกสารสดที่คัดลอกไปยังเซ็กเมนต์ใหม่และเซ็กเมนต์เก่าถูกลบออกทั้งหมด
การใช้กระบวนการง่ายๆนี้ Lucene สามารถรักษาดัชนีให้อยู่ในเกณฑ์ดีในแง่ของประสิทธิภาพการค้นหา
หวังว่ามันจะช่วยได้