مرحباً،
أواجه مشكلة في نافذة “النقل إلى موضوع موجود” المنبثقة (والتي كانت تعمل سابقاً على موقعي، لذا يبدو أنها تراجع/تدهور):
- الكتابة في البحث عن موضوع لا تقوم بتنقيح النتائج
- طلبات الشبكة تُرجع 200 مع المعلمات الصحيحة
- لا توجد أخطاء JavaScript في وحدة تحكم المتصفح
- البحث
/searchلكامل الموقع يعمل كما هو متوقع - استمرت المشكلة عبر عمليات إعادة البناء
مثال للطلب الذي يتم إجراؤه:
/search/query?term=Eve Park&type_filter=topic&search_for_id=true&restrict_to_archetype=regular
تبدو قائمة الاختيار وكأنها تظل مجموعة ثابتة من المواضيع ولا تتغير مع تغير
term.
بعد تصحيح الأخطاء من جانب العميل، شككت في البداية أن هذا قد يكون ناتجاً عن عدم تمكين pg_trgm في Postgres، ولكني أردت التأكد من ذلك قبل المتابعة.
قمت بتشغيل الأوامر التالية:
./launcher enter app
rails c
ActiveRecord::Base.connection.execute(
"SELECT extname FROM pg_extension WHERE extname = 'pg_trgm';"
).to_a
سيكون هذا التشخيص صحيحاً إذا أعاد الأمر:
[]
ومع ذلك، فقد أعاد بدلاً من ذلك:
[{"extname"=>"pg_trgm"}]
لذا فإن pg_trgm مُمكّن، وهذا لا يبدو أنه السبب الجذري.
لذلك أنوي تشغيل الأمر التالي:
./launcher enter app
rake search:reindex
قد يكون هذا الأمر ذا صلة لأن فئة معينة في منتدى لدي تحتوي على عدد كبير جداً من المواضيع.
ما هو محير هو أن:
- يعمل Discourse بشكل طبيعي بخلاف ذلك
- البحث الكامل
/searchيعمل كما هو متوقع - الإكمال التلقائي لنقل الموضوع يتدهور بصمت بدلاً من إظهار تحذير
كجزء من تصحيح الأخطاء، قمت أيضاً بتمكين الإعداد search prefer recent posts وأعدت تحميل المتصفح. لم يكن لهذا أي تأثير على السلوك - فلا يزال بحث “النقل إلى موضوع موجود” لا ينقح النتائج أثناء الكتابة.
نظراً لأن هذا الإعداد يؤثر فقط على ترتيب البحث الكامل /search ولا يؤثر على نقطة نهاية اختيار الموضوع، يبدو هذا متسقاً مع كون المشكلة خاصة بنقطة النهاية /search/query بدلاً من أداء البحث العام.
قبل تشغيل rake search:reindex، أردت التحقق من صحة المنطق:
يستخدم محدد نقل الموضوع /search/query مع search_for_id=true، والذي يعتمد بشكل مباشر أكثر على عمليات البحث في الفهرس من نقطة النهاية /search الكاملة. لذلك، يمكن أن يؤثر الفهرس البحثي غير المحدث جزئياً أو غير المتسق على المحدد بينما لا يزال البحث الكامل يعمل.
بالنظر إلى أن:
- يتم استدعاء نقطة النهاية،
- الاستجابات تُرجع 200،
pg_trgmمُمكّن،- وتغيير
search prefer recent postsلا يؤثر،
يبدو أن إعادة الفهرسة الكاملة rake search:reindex هي الخطوة المنطقية التالية لاستبعاد عدم اتساق الفهرس. وبشكل منفصل، فإن عدم وجود أي تحذير أو ملاحظات يجعل هذا محيراً بشكل خاص من منظور تجربة المستخدم للمسؤول.