سؤال

على سبيل المثال ، قل أن لديّ الوجه التالي:

الألوان

  • أحمر (7825)
  • أورانج (2343)
  • الأخضر (843)
  • الأزرق (5412)

في قاعدة البيانات الخاصة بي ، ستكون الألوان جدولًا وسيكون لكل لون مفتاح أساسي واسم/قيمة.

عند الفهرسة مع SOLR/Lucene ، في جميع الأمثلة التي رأيتها ، يتم فهرسة القيمة وليس المفتاح الأساسي. لذلك إذا قمت بتصفية اللون الأحمر ، فسأحصل على شيء مثل ما يلي:

http://www.example.com/search؟color=red

أنا أتساءل ، هل من الحكمة بدلاً من ذلك فهرسة المفتاح الأساسي واسترداد القيم من قاعدة البيانات عند عرض قيم الوجه؟ لذلك أود بدلاً من ذلك الحصول على شيء مثل هذا:

http://www.example.com/search؟color=1

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

هل بعد الآن لديه أي خبرة مع هذا؟ كيف تعتقد أن هذا سيؤثر على الأداء؟

شكرا لك مقدما!

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

المحلول

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

في نظامنا ، نقوم بفهرسة Lucene للمعرف بدلاً من اسم الكيانات ، تمامًا بسبب الأسباب التي ذكرتها. أيضًا ، تحتوي كياناتنا على مجموعة من الخصائص المرتبطة بها ، والتي لم يتم فهرستها ، لذلك يتعين علينا الوصول إلى قاعدة البيانات للحصول عليها على أي حال.

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

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