سؤال

لقد قمت بتكوين SOLR لإرجاع شظايا مع مجزأة من 500.

في بعض الأحيان ، يكون الحقل بأكمله 500 حرف أو أقل ، وبالتالي فإن الشظية مماثلة للحقل. بالنسبة للحقول التي تكون أطول من ذلك ، فإن Solr يعيد الشظية فقط دون أي إشارة (أو هكذا يبدو) أن الجزء يمثل جزءًا من محتوى الحقل فقط. وهذا يعني أن الشظية يمكن أن تبدأ في منتصف الجملة.

أريد أن أوضح للمستخدمين أنهم ينظرون إلى جزء من شظية وتبحث ببساطة علامات القطع في النهاية و/أو بدء مثل هذه الشظية. هل هذه الوظيفة مدمجة في SOLR؟ إذا لم يكن الأمر كذلك ، كيف ستذهب إلى إدخال القطع النارية؟

هل كانت مفيدة؟

المحلول

ما انتهى بي الأمر هو إعادة كل من الشظية والحقل دون تغيير الذي تم إنشاء الجزء منه.

بعد ذلك كتبت بعض المنطق الذي قارن بين الاثنين من أجل تحديد ما إذا كان ينبغي إضافة القطع العسكرية إلى الشظية وإذا كان الأمر كذلك ، سواء كنت أضفه قبل أو قبل أو بعد الشظية.

نصائح أخرى

لن يعيد Solr مؤشرًا ، فأنت على حق.

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

اقتطاع أي شيء من 501 إلى 500 وإضافة القطع.

لقد تعاملت مع نفس القضية. الطريقة التي ذهبت بها للقيام بذلك هي ما يلي:

  1. احصل على السلسلة الأصلية
  2. احصل على كل من الأحرف الأولى والأخيرة من السلسلة الأصلية
  3. احصل على كل من الأحرف الأولى والأخيرة من الشظية التي تم إرجاعها بواسطة Solr Search
  4. قارن كلاهما ، وملء متغير عند الحاجة!

    $f_ellip = NULL;
    $l_ellip = NULL;
    if ($orig_body_beggining != substr((string)$hl_content->str, 0, 10)) {
        $f_ellip = "… ";
    }
    if ($orig_body_end != substr((string)$hl_content->str, 0, -10)) {
         $l_ellip = " …";
    }
    $entry_body = $f_ellip.(string)$hl_content->str.$l_ellip;
    

هذا نهج أفضل آخر. أثناء إنشاء الفهرس ، أضف سمة "دعابة" التي تم تطبيق هذا المنطق بالفعل. ادفع هذا الجهد من طلباتك تمامًا. هذا هو بالضبط كيف سأفعل هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top