تمييز النص java مع GroupDocs.Search

في تطبيقات المؤسسات الحديثة، highlight text java ضروري لتحويل نتائج البحث الخام إلى رؤى قابلة للقراءة فورًا. سواءً كنت تبني بوابة مراجعة قانونية، أو محرك بحث أكاديمي، أو لوحة دعم عملاء، فإن القدرة على تحديد وتأكيد مصطلحات الاستعلام بصريًا توفر للمستخدمين ثوانٍ لا تحصى من الفحص اليدوي. يوضح هذا الدليل كيفية استخدام GroupDocs.Search for Java للقيام بـ search documents java، وindex documents java، وتطبيق التمييز على مستوى المستند الكامل أو على مستوى المقتطفات، كل ذلك ببضع أسطر من الشيفرة.

إجابات سريعة

  • ماذا يعني “search and highlight text”؟ يعني ذلك تحديد مصطلحات الاستعلام داخل المستند وتأكيدها بصريًا (على سبيل المثال، بخلفية ملونة).
  • أي مكتبة توفر هذه القدرة؟ GroupDocs.Search for Java.
  • هل أحتاج إلى ترخيص؟ نسخة تجريبية مجانية تكفي للتقييم؛ يلزم الحصول على ترخيص كامل للاستخدام في الإنتاج.
  • هل يمكنني تخصيص ألوان التمييز؟ نعم—يمكن ضبط أي لون RGB عبر HighlightOptions.
  • هل يدعم التمييز على مستوى المقتطف؟ بالتأكيد؛ يمكنك تحديد عدد المصطلحات قبل/بعد التطابق لإنشاء مقتطفات مختصرة.

كيفية تمييز النص java في المستندات

لتمييز النص java في المستندات، قم أولاً بإنشاء فهرس للملفات المصدر باستخدام إعدادات ضغط مناسبة، ثم نفّذ استعلام بحث لتحديد المصطلحات المطلوبة، وأخيرًا صدّر النتائج إلى HTML أو PDF أو نص عادي مع وضع كل تطابق داخل وسم تمييز. تضمن هذه العملية ذات الخطوات الثلاثة تمييزًا سريعًا ودقيقًا عبر مجموعات كبيرة.

  1. Create an index مع إعدادات ضغط تقلل من مساحة التخزين.
  2. Execute a search باستخدام سلسلة الاستعلام التي تريد تمييزها.
  3. Generate output (HTML أو PDF أو نص عادي) حيث يتم إحاطة كل ظهور لمصطلح الاستعلام بوسم تمييز.

ما هو البحث وتحديد النص؟

البحث وتحديد النص هو عملية مسح مجموعة مفهرسة للعثور على استعلام معين، استرجاع المستندات المطابقة، ثم وضع علامة على كل ظهور لمصطلح الاستعلام داخل النتيجة (HTML، PDF، إلخ). تساعد هذه الإشارة البصرية المستخدمين النهائيين على اكتشاف المعلومات ذات الصلة فورًا.

لماذا نستخدم GroupDocs.Search for Java؟

يقدم GroupDocs.Search for Java فهرسة عالية الأداء (حتى 50 GB لكل فهرس باستخدام Compression.High)، وتمييز غني يعمل على المستندات الكاملة والمقاطع المخصصة، ودعم عبر الصيغ لأكثر من 30 نوع ملف—بما في ذلك DOCX وPDF وPPTX وTXT. كما توفر المكتبة فهرسة تراكمية تسمح بإضافة ملفات جديدة دون إعادة بناء الفهرس بالكامل، مما يقلل وقت التوقف بنسبة تصل إلى 80 % في عمليات النشر على نطاق واسع.

المتطلبات المسبقة

  • مجموعة تطوير جافا (JDK) 8 أو أحدث.
  • Maven لإدارة الاعتمادات.
  • بيئة تطوير متكاملة مثل IntelliJ IDEA أو Eclipse.
  • إلمام أساسي بصياغة جافا.

إعداد GroupDocs.Search for Java

أضف مستودع GroupDocs والاعتماد إلى ملف pom.xml الخاص بك:

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-search</artifactId>
    <version>25.4</version>
</dependency>

يمكنك أيضًا تنزيل أحدث ملف JAR مباشرة من الموقع الرسمي: إصدارات GroupDocs.Search for Java.

الحصول على الترخيص

ابدأ بنسخة تجريبية مجانية أو احصل على ترخيص مؤقت للتقييم. بالنسبة للنشر في بيئات الإنتاج، اشترِ ترخيصًا كاملًا لفتح جميع الميزات.

دليل التنفيذ

ينقسم التنفيذ إلى قسمين عمليين: التمييز في المستندات الكاملة والتمييز في المقاطع. يتضمن كل قسم الخطوات الأساسية لـ كيفية تمييز مستندات Java باستخدام GroupDocs.Search.

تكوين إعدادات الفهرس

قبل الفهرسة، اضبط التخزين لاستخدام ضغط عالي—هذا يقلل من استهلاك القرص بنسبة تصل إلى 70 % مع الحفاظ على سرعة البحث.

IndexSettings هو كائن التكوين الذي يتحكم في كيفية تخزين الفهرس على القرص. اضبط Compression إلى Compression.High لتفعيل هذا التحسين.
Compression يحدد مستوى ضغط البيانات المطبق على ملفات الفهرس، حيث يوفر Compression.High أقصى تقليل للحجم.

التمييز في المستندات الكاملة

الخطوة 1: إنشاء وتعبئة الفهرس

أنشئ مجلد فهرس وأضف جميع الملفات المصدر التي تريد البحث فيها. تمثل فئة Index الحاوية القابلة للبحث.

الخطوة 2: تنفيذ البحث وتطبيق التمييز

ابحث عن المصطلح (مثلاً ipsum) وأنشئ ملف HTML يحتوي على التطابقات المميزة. استخدم HighlightOptions لتحديد لون التمييز وما إذا كنت تريد استخدام أنماط داخلية.

HighlightOptions يتيح لك تعريف ألوان النص والخلفية، بالإضافة إلى فئة CSS التي ستُطبق على كل مصطلح مميز.

HtmlHighlighter يولد مخرجات HTML مع المصطلحات المميزة بناءً على الخيارات المقدمة.
SearchResult يحتوي على قائمة المستندات المطابقة ومواقع كل مصطلح تم العثور عليه.

الإجابة المباشرة: حمّل فهرسك، استدعِ search("ipsum")، ومرّر نتيجة SearchResult مع كائن HighlightOptions المكوَّن إلى HtmlHighlighter. يُعيد المميز HTML حيث يُحاط كل ظهور لكلمة “ipsum” بوسم <span> مع لون الخلفية المختار.

الخيارات الرئيسية المشروحة

  • Compression – الضغط العالي يوفر مساحة التخزين.
  • HighlightColor – اضبط أي قيمة RGB لتتناسب مع لوحة ألوان واجهتك.
  • UseInlineStyles – false يولد HTML نظيف يمكن تنسيقه عالميًا باستخدام CSS.

التمييز في المقاطع

الخطوة 1: الفهرسة والبحث (نفس ما سبق)

تنطبق خطوات الفهرسة والبحث نفسها؛ ستعيد استخدام كائنات Index وSearchResult.

الخطوة 2: تعريف سياق المقطع والتمييز

حدد عدد المصطلحات قبل وبعد التطابق التي يجب ظهورها في كل مقطع باستخدام FragmentOptions.

FragmentOptions يتحكم في عدد الكلمات المحيطة (termsBefore وtermsAfter) التي تُضمّن في كل مقتطف، مما يتيح لك موازنة السياق مع طول المقتطف.

الخطوة 3: استرجاع وكتابة المقاطع المميزة

اجمع المقاطع المولدة واكتبها إلى ملف HTML. كل مقطع مُسبقًا مميز وفقًا لـ HighlightOptions التي قمت بتكوينها.

fragmentHighlighter هو أداة تنشئ مقتطفات مميزة من SearchResult باستخدام خيارات المقطع والتمييز المحددة.

الإجابة المباشرة: بعد الحصول على SearchResult، استدعِ fragmentHighlighter.highlight(searchResult, fragmentOptions, highlightOptions). تُعيد الطريقة قائمة من مقتطفات HTML، كل منها يحتوي على المصطلح المطابق محاطًا بعدد الكلمات السياقية المحدد ومُميزًا باللون المختار.

تطبيقات عملية

  1. مراجعة المستندات القانونية – تمييز القوانين، البنود، أو مراجع القضايا عبر آلاف العقود فورًا.
  2. البحث الأكاديمي – استخراج المصطلحات الرئيسية عبر عشرات ملفات PDF وWord، مما يقلل وقت مراجعة الأدبيات بنسبة تصل إلى 60 %.
  3. دعم العملاء – تحديد أرقام الطلبات أو رموز الأخطاء داخل سجلات التذاكر، مما يمكّن الوكلاء من حل المشكلات بسرعة أكبر.

اعتبارات الأداء

  • حجم الفهرس – الضغط العالي (Compression.High) يقلل من البصمة التخزينية بنسبة تصل إلى 70 % دون تأثير ملحوظ على الكمون.
  • سياق المقطع – القيم الأكبر لـ termsBefore/After تحسن قابلية قراءة المقتطفات لكنها قد تضيف 10–15 ms لكل استعلام.
  • إدارة الذاكرة – راقب مساحة heap في JVM عند فهرسة مجموعات بيانات ضخمة؛ فكر في الفهرسة التراكمية للمجموعات التي تتجاوز 2 GB للحفاظ على استهلاك الذاكرة تحت 1 GB.

المشكلات الشائعة والحلول

  • أخطاء الفهرسة – تحقق من مسارات الملفات وتأكد من أن التطبيق يمتلك صلاحيات القراءة/الكتابة على مجلد الفهرس.
  • عدم ظهور التمييز – تأكد من أن UseInlineStyles يتوافق مع تنسيق الإخراج (HTML مقابل PDF).
  • عدم تطبيق اللون – تأكد من أن قيم RGB ضمن النطاق 0‑255 وأن العارض يدعم CSS الداخلي أو فئة CSS المرفقة.

الأسئلة المتكررة

س: ما هي الفوائد لاستخدام GroupDocs.Search for Java؟
ج: يوفر فهرسة سريعة وقابلة للتوسع، وتمييز قابل للتخصيص، ودعم لأكثر من 30 صيغة مستند، مع معالجة ملفات تصل إلى 500 صفحة في أقل من ثانيتين على خادم نموذجي.

س: كيف يمكن دمج GroupDocs.Search مع واجهة برمجة تطبيقات REST؟
ج: عرّض طرق البحث والتمييز عبر متحكمات Spring Boot، مع إرجاع مقتطفات HTML أو حمولة JSON تحتوي على المقاطع المميزة.

س: هل تتعامل المكتبة مع الملفات المحمية بكلمة مرور؟
ج: نعم—قم بتمرير كلمة المرور عند إضافة المستند إلى الفهرس عبر addDocument(filePath, password).

س: هل يمكنني تخصيص وسم التمييز بخلاف اللون؟
ج: بالتأكيد؛ يمكنك تعيين فئة CSS باستخدام options.setCssClass("myHighlight") وتنسيقها عالميًا، أو تعديل HTML الناتج بعد التمييز.

س: أي نسخة تم اختبارها لهذا الدليل؟
ج: تم التحقق من الشيفرة ضد GroupDocs.Search 25.4.

س: كيف أضبط HighlightOptions java لاستخدام فئة CSS بدلاً من الأنماط الداخلية؟
ج: استدعِ options.setUseInlineStyles(false) وحدد قاعدة CSS للفئة التي تعيينها عبر options.setCssClass("myHighlight").

س: هل هناك طريقة لتمييز المصطلحات في مخرجات PDF مباشرة؟
ج: نعم—يعمل GroupDocs.Search مع ملفات PDF، ويُخرج المميز HTML الذي يمكن تضمينه في عارض PDF أو إعادة تحويله إلى PDF باستخدام GroupDocs.Conversion.


آخر تحديث: 2026-09-27
تم الاختبار مع: GroupDocs.Search 25.4
المؤلف: GroupDocs

<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>
IndexSettings settings = new IndexSettings();
settings.setTextStorageSettings(new TextStorageSettings(Compression.High));
String indexFolder = "/path/to/your/document/directory/HighlightingInEntireDocument";
Index index = new Index(indexFolder, settings);
index.add("/path/to/your/documents");
SearchResult result = index.search("ipsum");

if (result.getDocumentCount() > 0) {
    FoundDocument document = result.getFoundDocument(0);
    OutputAdapter outputAdapter = new FileOutputAdapter(OutputFormat.Html, "/path/to/your/output/directory/Highlighted.html");
    
    Highlighter highlighter = new DocumentHighlighter(outputAdapter);
    HighlightOptions options = new HighlightOptions();
    options.setHighlightColor(new Color(150, 255, 150)); // Custom green shade
    options.setUseInlineStyles(false); // Prefer CSS for styling
    
    index.highlight(document, highlighter, options);
}
String indexFolder = "/path/to/your/document/directory/HighlightingInFragments";
Index index = new Index(indexFolder, settings);
index.add("/path/to/your/documents");

SearchResult result = index.search("ipsum");
HighlightOptions options = new HighlightOptions();
options.setTermsBefore(5); // Include 5 terms before the match
options.setTermsAfter(5);   // Include 5 terms after the match
options.setHighlightColor(new Color(127, 200, 255)); // Custom blue shade
options.setUseInlineStyles(true); // Use inline styles for emphasis

FoundDocument document = result.getFoundDocument(0);
FragmentHighlighter highlighter = new FragmentHighlighter(OutputFormat.Html);

index.highlight(document, highlighter, options);
StringBuilder stringBuilder = new StringBuilder();
FragmentContainer[] fragmentContainers = highlighter.getResult();

for (FragmentContainer container : fragmentContainers) {
    String[] fragments = container.getFragments();
    
    if (fragments.length > 0) {
        stringBuilder.append("\n<br>").append(container.getFieldName()).append("<br>\n");
        
        for (String fragment : fragments) {
            stringBuilder.append(fragment).append("\n");
        }
    }
}

try {
    Files.write(Paths.get("/path/to/your/output/directory/Fragments.html"), stringBuilder.toString().getBytes());
} catch (IOException ex) {
    // Handle exceptions
}

دروس ذات صلة