سؤال

أنا ألعب مع البحث الذي يعمل بنظام WebApp الخاص بي ، وأحسب أنه من الأفضل استخدام DataImporthandler للتعامل مع المزامنة مع التطبيق عبر قاعدة البيانات. أنا أحب أناقة فقط التحقق من last_updated_date ميدان. أشياء جيدة. ومع ذلك ، لا أعرف كيفية التعامل مع حذف المستندات مع هذا النهج. الطريقة التي أراها ، لدي خياران. يمكنني إما إرسال رسالة صريحة إلى Solr من العميل عند حذف المستند ، أو يمكنني إضافة علامة "محذوفة" وترك الكائن في قاعدة البيانات ، بحيث يلاحظ Solr أن المستند قد تغير ويتم الآن " " يمكنني إضافة مرشح استعلام من شأنه أن يتجاهل النتائج مع العلم المحذوف ، لكن يبدو أنه من غير الفعال تضمين جميع المستندات المحذوفة في مؤشر Lucene. ماذا يفعل الناس الآخرون؟

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

المحلول

هذه هي خياراتك:

  • يستخدم أوامر DIH الخاصة $ deletedocbyid أو $ deletedocbyquery (يتطلب SOLR 1.4+)
  • استخدم ال المعلمة نظيفة من DIH لحذف الفهرس بأكمله قبل الاستيراد.
  • يستخدم preimportdelequery لتحديد ما سيتم تنظيفه قبل الاستيراد. (يتطلب SOLR 1.4+)
  • استخدم مشغلات قاعدة البيانات بدلاً من DIH لإدارة تحديث الفهرس.
  • إذا كنت تستخدم نوعًا من ORM ، فاستخدم إمكانيات اعتراضها بدلاً من DIH. على سبيل المثال يمكنك استخدامه أحداث السبات لتحديث الفهرس عند التحديث ، أدخل أو حذف.

نصائح أخرى

أحب أن أحصل على علامة "محذوفة" حتى لا أحذف فعلي بياناتي! يعتمد على كيف أنت بجنون العظمة. أحب اقتراحات موريسيو ...

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