سؤال

لذلك كل صباح لتمهيد الخادم الخاص بي ، أحتاج إلى القيام بالمهام التالية ..

>> sunspot-solr stop
>> sunspot-solr start
>> script/console
>> Organization.reindex
>> Event.reindex
>> Deal.reindex
>> exit
>> script/server

هل هناك أي طريقة يمكنني من خلالها إجراء اختصار في ~/.profile كمستعار لأداء كل هذا بالنسبة لي دون أن أكتبه كل يوم؟

مثل هذا رغم أنه لا يعمل؟

alias blam='cur && sunspot-solr stop && sunspot-solr start && script/console && Organization.reindex && Event.reindex && Deal.reindex && exit && script/server'
هل كانت مفيدة؟

المحلول

ربما هذا سوف يخفف بعض الألم؟

#Rakefile
desc "Reindex the organizations, events, and deals Solr indexes."
task :reindex => :environment do
  Organization.reindex
  Event.reindex
  Deal.reindex
end

ثم كل صباح يركض

> sunspot-solr stop
> sunspot-solr start
> rake reindex
> script/server

نصائح أخرى

هذا هو أول منشور لي Stackoverflow وهو سؤال قديم ، لكنني شعرت أنه يمكنني المساهمة بطريقة ما: D إعادة بناء مؤشر SOLR بشكل دوري هو مهمة باهظة الثمن ، يجب عليك تجنب القيام بأشياء مثل هذه في الإنتاج! ما تبحث عنه يمكن تحقيقه على أفضل وجه:

1 - قم بتحرير sunspot.yml وأضف الخط

auto_commit_after_request = true

هذا سيخبر Sunspot بتحديث الفهرس كل مره يتم حفظ إدخال نموذج جديد (أو حذفه). سيؤدي ذلك إلى تحديث الفهرس الخاص بك ولكن يمكن أن يكون مكلفًا.

2 - إنشاء مهمة أشعل النار (يمكن تشغيلها مع cron في عامل تأخير) مثل هذا

task :update_index => :environment do
Sunspot.commit_if_dirty
end

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

3 - تحرير ملف solrconfig.xml الخاص بك وضبط ملف autoCommit ميزة مع maxTime فاصل تعسفي بين الالتزامات (تذكر أن تستخدم أوقات في الميلي ثانية). 5 دقائق ستكون لطيفة لمعظم التطبيقات ، ولكن يجب عليك اختبار هذا بنفسك.

أتمنى أن يساعدك هذا!

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