إتقان البحث الفعال في المستندات باستخدام GroupDocs.Search للـ Java
العثور على الفقرة الصحيحة داخل آلاف ملفات PDF أو Word أو جداول البيانات قد يشعر كالبحث عن إبرة في كومة قش. How to create index بسرعة واسترجاع تلك الإبرة هو ما يجعل حل البحث في المستندات ذا قيمة. في هذا الدرس ستتعلم كيفية استخدام GroupDocs.Search for Java، مكتبة بحث Java عالية الأداء، لـ create index، add documents to index، وextract text from documents بصيغ متعددة مثل الملفات، التدفقات، السلاسل، والبيانات المهيكلة. في النهاية ستحصل على خط أنابيب فهرسة جاهز للإنتاج يمكنه التعامل مع مجموعات مستندات ضخمة مع الحفاظ على استهلاك الذاكرة منخفضًا.
إجابات سريعة
- What is the primary purpose? To how to create index and retrieve document content instantly.
- Which library should I use? The GroupDocs.Search for Java java search library.
- Can I output text to a file? Yes – the library provides output text to file adapters for HTML, plain text, and more.
- Is structured extraction supported? Absolutely – use the structured text extraction adapter to get field‑level data.
- Do I need a license? A trial license works for development; a permanent license is required for production deployments.
ما ستتعلمه
- كيفية how to create index وadd documents to index باستخدام GroupDocs.Search للـ Java.
- تقنيات output text to file، التدفقات، السلاسل، والصيغ المهيكلة.
- نصائح تحسين الأداء التي تحافظ على الفهرسة سريعة وكفء في استهلاك الذاكرة.
- سيناريوهات واقعية حيث تتألق هذه الميزات، مثل مستودعات العقود القانونية وأرشيفات الأوراق الأكاديمية.
لماذا تستخدم GroupDocs.Search للـ Java؟
يدعم GroupDocs.Search أكثر من 50 صيغة إدخال وإخراج – بما في ذلك DOCX و XLSX و PPTX و PDF و HTML وأنواع الصور الشائعة – ويمكنه فهرسة ملفات متعددة الجيجابايت دون تحميل الملف بالكامل في الذاكرة. تُظهر المعايير أن مجموعة مستندات بحجم 1 GB يمكن فهرستها في أقل من دقيقتين على خادم قياسي بثمانية نوى، بينما تُعيد استعلامات البحث النتائج في أقل من 100 ms.
المتطلبات المسبقة
- Java Development Kit (JDK) 8 أو أحدث.
- مكتبة GroupDocs.Search for Java (تجريبية أو مرخصة).
- Maven لإدارة الاعتمادات.
- معرفة أساسية بـ Java I/O.
إعداد GroupDocs.Search للـ Java
أولاً، أضف مستودع Maven الخاص بـ GroupDocs.Search والاعتماد إلى ملف pom.xml الخاص بمشروعك. تضمن هذه الخطوة توفر المكتبة على مسار الفئة.
إعداد Maven
أضف تكوينات المستودع والاعتماد التالية في ملف pom.xml الخاص بك:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/search/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-search</artifactId>
<version>25.4</version>
</dependency>
</dependencies>
لمن يفضل التحميل المباشر، يمكنك الحصول على أحدث نسخة من GroupDocs.Search for Java releases.
الحصول على الترخيص
لاستخدام GroupDocs.Search في الإنتاج، احصل على ترخيص تجريبي أو دائم من الموقع الرسمي. الترخيص التجريبي غير مقيد للتطوير والاختبار.
How to create index java with custom settings
Index هو الفئة الأساسية التي تمثل مجموعة مستندات قابلة للبحث.IndexSettings يضبط الخيارات مثل الضغط للفهرس.CompressionLevel يحدد درجة الضغط المطبقة على النص المخزن.
حمّل كائن Index مع تمكين الضغط، وجهه إلى مجلد، وأضف جميع الملفات المدعومة. يوضح هذا الفقرة مباشرة ما يجب فعله: أنشئ Index باستخدام new Index("indexFolder", new IndexSettings().setCompressionLevel(CompressionLevel.High))، ثم استدعِ index.add("documentsFolder", true) لفهرسة كل ملف مدعوم بشكل متكرر. يقلل وضع الضغط العالي من حجم التخزين على القرص بنسبة تصل إلى 70 % مع الحفاظ على سرعة البحث.
إنشاء الفهرس هو الأساس لأي تطبيق يعتمد على البحث. المثال أدناه يمرّ بك عبر العملية، يشرح كل إعداد، ويظهر كيفية التحقق من نجاح بناء الفهرس.
إنشاء الفهرس وفهرسة المستندات
نظرة عامة
فئة Index هي المكوّن الأساسي الذي يمثل مجموعة مستندات قابلة للبحث. تخزن الفهارس المعكوسة، قواميس المصطلحات، والبيانات الوصفية المطلوبة للبحث السريع.
import com.groupdocs.search.*;
import java.io.ByteArrayOutputStream;
public class FeatureIndexCreation {
public static void main(String[] args) {
// Define the folder paths for indexing
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
String documentsFolder = YOUR_DOCUMENT_DIRECTORY + "/DocumentsPath"; // Adjust as needed
// Creating an index settings instance with compression enabled
IndexSettings settings = new IndexSettings();
settings.setTextStorageSettings(new TextStorageSettings(Compression.High));
// Creating the index in the specified folder
Index index = new Index(indexFolder, settings);
// Adding documents from the specified folder to the index
index.add(documentsFolder);
}
}
شرح
- Index Settings: نُفعّل high compression لتخزين النص، مما يحسّن استخدام مساحة القرص دون الإضرار بسرعة الاستعلام.
- Adding Documents: طريقة
index.add()adds documents to index، حيث تقوم بمسح المجلد بشكل متكرر وتتعامل مع جميع الصيغ المدعومة تلقائيًا.
How to output text to file, stream, string, and structured formats
بعد الفهرسة، غالبًا ما تحتاج إلى استخراج النص الخام أو المنسق للمستند. يقدم GroupDocs.Search أربعة محولات تسمح لك بكتابة المحتوى المستخرج إلى ملف، تدفق في الذاكرة، String في Java، أو نموذج كائن مهيكل.
إخراج نص المستند إلى ملف
FileOutputAdapter يكتب نص المستند المستخرج إلى ملف بالصيغ المختارة.
نظرة عامة
FileOutputAdapter يكتب النص المستخرج بالصيغ المختارة (HTML، نص عادي، إلخ) مباشرة إلى ملف على القرص. هذا مفيد لإنشاء تقارير قابلة للقراءة البشرية أو لتغذية خطوط معالجة لاحقة.
import com.groupdocs.search.*;
public class FeatureOutputToFile {
public static void main(String[] args) {
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
Index index = new Index(indexFolder);
// Assuming documents are already indexed, retrieve the first document
DocumentInfo[] documents = index.getIndexedDocuments();
if (documents.length > 0) {
DocumentInfo document = documents[0];
// Output document text to an HTML file
FileOutputAdapter fileOutputAdapter = new FileOutputAdapter(OutputFormat.Html, YOUR_OUTPUT_DIRECTORY + "/Text.html");
index.getDocumentText(document, fileOutputAdapter);
}
}
}
شرح
- FileOutputAdapter: يحوّل نص المستند المفهرس إلى HTML ويكتبها إلى مسار الملف المحدد، محافظًا على التنسيقات الأساسية مثل العناوين والجداول.
إخراج نص المستند إلى تدفق
StreamOutputAdapter يرسل نص المستند المستخرج إلى ByteArrayOutputStream دون إنشاء ملف مؤقت.
نظرة عامة
عندما تحتاج المحتوى مؤقتًا فقط—مثلاً لإرساله عبر HTTP أو تضمينه في استجابة ويب—استخدم StreamOutputAdapter. يرسل النص إلى ByteArrayOutputStream، متجنبًا عبء إنشاء ملف مؤقت.
import com.groupdocs.search.*;
import java.io.ByteArrayOutputStream;
public class FeatureOutputToStream {
public static void main(String[] args) {
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
Index index = new Index(indexFolder);
// Assuming documents are already indexed, retrieve the first document
DocumentInfo[] documents = index.getIndexedDocuments();
if (documents.length > 0) {
DocumentInfo document = documents[0];
// Output document text to a stream in HTML format
ByteArrayOutputStream stream = new ByteArrayOutputStream();
StreamOutputAdapter streamOutputAdapter = new StreamOutputAdapter(OutputFormat.Html, stream);
index.getDocumentText(document, streamOutputAdapter);
}
}
}
شرح
- StreamOutputAdapter: يرسل نص المستند إلى
ByteArrayOutputStream، مما يتيح معالجة مرنة دون لمس نظام الملفات.
إخراج نص المستند إلى سلسلة
StringOutputAdapter يلتقط النص الكامل للمستند في كائن String واحد.
نظرة عامة
للتسجيل السريع، تصحيح الأخطاء، أو عرض الواجهة، يلتقط StringOutputAdapter النص الكامل للمستند في كائن String واحد.
import com.groupdocs.search.*;
public class FeatureOutputToString {
public static void main(String[] args) {
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
Index index = new Index(indexFolder);
// Assuming documents are already indexed, retrieve the first document
DocumentInfo[] documents = index.getIndexedDocuments();
if (documents.length > 0) {
DocumentInfo document = documents[0];
// Output document text to a string in HTML format
StringOutputAdapter stringOutputAdapter = new StringOutputAdapter(OutputFormat.Html);
index.getDocumentText(document, stringOutputAdapter);
String result = stringOutputAdapter.getResult();
}
}
}
شرح
- StringOutputAdapter: يلتقط نص المستند في
String، مما يسهل تضمينه في السجلات، مخرجات الكونسول، أو مكوّنات الواجهة.
إخراج نص المستند إلى صيغة مهيكلة
StructuredOutputAdapter يُعيد نموذج كائن غني يحتوي على فقرات، جداول، وبيانات وصفية مخصصة.
نظرة عامة
StructuredOutputAdapter يُعيد نموذج كائن غني يحتوي على فقرات، جداول، وبيانات وصفية مخصصة. هذه الصيغة مثالية لمعالجة اللغة الطبيعية (NLP) أو تدفقات استخراج البيانات.
import com.groupdocs.search.*;
public class FeatureOutputToStructure {
public static void main(String[] args) {
String indexFolder = YOUR_DOCUMENT_DIRECTORY + "/OutputAdapters/Index";
Index index = new Index(indexFolder);
// Assuming documents are already indexed, retrieve the first document
DocumentInfo[] documents = index.getIndexedDocuments();
if (documents.length > 0) {
DocumentInfo document = documents[0];
// Output document text to a structured format like PlainText
StructuredOutputAdapter structuredOutputAdapter = new StructuredOutputAdapter(OutputFormat.PlainText);
index.getDocumentText(document, structuredOutputAdapter);
}
}
}
شرح
- StructuredOutputAdapter: يستخرج نص المستند إلى صيغة structured text extraction، مما يتيح تحليلًا دقيقًا، استخراج حقول، وتكاملًا مع خطوط تعلم الآلة.
المشكلات الشائعة والحلول
| المشكلة | السبب | الحل |
|---|---|---|
| Index not created | مسار المجلد غير صحيح أو نقص في أذونات الكتابة | تحقق من وجود indexFolder وأن التطبيق يمتلك صلاحية الكتابة |
| No documents returned | لم يتم استدعاء index.add() أو المجلد المصدر غير صحيح | تأكد من أن documentsFolder يشير إلى الدليل الصحيح ويحتوي على صيغ ملفات مدعومة |
| Output file empty | مسار محول الإخراج غير صالح أو المجلدات مفقودة | أنشئ الدليل الهدف (YOUR_OUTPUT_DIRECTORY) قبل التشغيل |
| Memory spikes with large files | تحميل الملف بالكامل في الذاكرة | استخدم StreamOutputAdapter لمعالجة البيانات بشكل تدريجي |
الأسئلة المتكررة
س: هل يمكنني استخدام GroupDocs.Search مع لغات JVM أخرى مثل Kotlin أو Scala؟
ج: نعم، المكتبة مكتوبة بـ Java خالص وتعمل بسلاسة مع أي لغة JVM.
س: كيف يؤثر الضغط على سرعة البحث؟
ج: يقلل الضغط العالي من مساحة التخزين على القرص بنسبة تصل إلى 70 % ويضيف فقط حملاً بسيطًا على وحدة المعالجة أثناء الفهرسة؛ تبقى زمن استجابة الاستعلام أقل من 100 ms للأحمال النموذجية.
س: هل يمكن تحديث فهرس موجود دون إعادة بنائه بالكامل؟
ج: بالتأكيد. استخدم index.add() للملفات الجديدة وindex.remove() لحذف القديمة، مما يسمح بالتحديثات المتزايدة.
س: أي صيغة إخراج هي الأنسب لخطوط معالجة اللغة الطبيعية؟
ج: نتيجة PlainText من محول structured text extraction توفر محتوى نظيفًا غير مرتبط بلغة معينة، وهو مثالي لمهام NLP.
س: هل أحتاج ترخيصًا للتطوير والاختبار؟
ج: الترخيص التجريبي المجاني يكفي للتطوير والتقييم؛ تتطلب عمليات الإنتاج ترخيصًا مُشتَرًى.
الخاتمة
أصبحت الآن تمتلك سير عمل كامل جاهز للإنتاج لإنشاء how to create index، إضافة المستندات، واستخراج نصها بجميع الصيغ التي قد تحتاجها. ابدأ بتهيئة Index مع الضغط، أضف مجموعة مستنداتك، واختر محول الإخراج المناسب للسيناريو التالي—سواء كان توليد تقارير HTML، تغذية نموذج NLP، أو بث المحتوى إلى عميل ويب. جرّب واجهات التحديث المتزايدة للحفاظ على فهرسك محدثًا دون الحاجة لإعادة بناء مكلفة، وستستمتع ببحث سريع وموثوق عبر أي مستودع مستندات.
Last Updated: 2026-06-27
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs