سؤال

أنا أستخدم SOLRJ كعميل لفهرسة المستندات على خادم SOLR.

أواجه مشكلة أثناء حذف الفهارس من خلال "ID" من SOLR Server. أنا أستخدم التعليمات البرمجية التالية لحذف الفهارس:

server.deleteById("id:20");
server.commit(true,true);

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

شكرًا!

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

المحلول

عند الاتصال بـ DeleteById ، ما عليك سوى استخدام المعرف ، دون بناء جملة الاستعلام:

server.deleteById("20");
server.commit();

نصائح أخرى

بعد حذف المستند ، ارتكب الخادم وأضف الأسطر التالية. بعد خط التزام الخادم.

  UpdateRequest req = new UpdateRequest();
  req.setAction( UpdateRequest.ACTION.COMMIT, false, false );
  req.add( docs );
  UpdateResponse rsp = req.process( server );

استخدم الطريقة DeleteByquery () لحذف المستندات التي تطابق الاستعلام:

server.deleteByQuery("id:20");
server.commit();

لذلك لن يعمل DeleteById إلا إذا كنت تقوم بتكوين مفتاحك باستخدام سمة واحدة فقط. لذلك ، كان لدي حالة حيث كان المعرف مزيجًا من سمات متعددة مثل موظف+قسم. ولكن ، كان لدى طاولتي الموظف والكمال كأعمدة منفصلة وكذلك مع الفهارس التي تم إنشاؤها عليها. لذلك عندما أردت حذف سجل ، كان لدي فقط الموظف وليس قسمًا. لقد استخدمت الأمر Curl لحذف حيث يمكنك تحديد العمود وقيمته وسيحذف السجل بأكمله.

على سبيل المثال حليقة http: // localhost: 8983/solr/update --بيانات ':نوع المحتوى '-H': text/xml ؛ charset = utf-8 '

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