

جستجوی سریع بین ۲۰,۰۰۰ متن در وردپرس
- توسعه نرمافزار و آیتی
- زمان باقیمانده برای ارسال پیشنهاد
ما یک وبسایت وردپرسی داریم که کارش فیلتر و جستجو بین بیست هزار درس هست. کاربر روی این سایت لاگین نمیکنه و فقط جستجو میکنه و درس مورد نظرش رو باز میکنه و برای دانلود به یک سیستم و سابدامین دیگه منتقل میشه.
مشکل اینه که از زمانی که کاربر روی فیلتر کلیک میکنه تا وقتی که نتیجه نمایش داده میشه گاهی از ۴ ثانیه بالاتر میره. همچنین وقتی کلمه ای رو تایپ میکنه برای جستجو به ۱۰ تا ۱۲ ثانیه هم میرسه (موقع جستجوی کلمه/عبارت، داخل فیلد عنوان و متن ۲۰ هزار تا پست رو میگرده و در body هر پست هم بین ۱۰ تا ۱۰۰۰ کلمه هست)
ما میخوایم شرایط رو طوری کنیم که این سرعت به حدود یک الی دو ثانیه و نهایتا ۳ ثانیه برسه افزونه های زیر روی این سایت نصب هست: Jetengine Jetsmarfilter Jetsearch Elementor Elementor pro Wprocket Redis
روی این سایت ۲۰ هزار صفحه (درس) ایجاد کردیم. (و قراره تا چند صد هزار صفحه اضافه بشه) هر صفحه علاوه بر عنوان و عکس و Body دارای حدود ۳۰ فیلد دیگه هست که اکثرا taxonomy و تعدادی هم meta field مربوط به CPT ساخته شده در جت انجین هستند.
یک صفحه المنتوری هم ایجاد کردیم که کاربر از بین این صفحات جستجو و فیلتر کنه. حدود ۷ تا از فیلترهای taxonomy رو در jetsmartfilter قرار داریم و کاربر میتونه روشون کلیک کنه. یک فیلد جستجو هم با jetsearch بالای فیلترها قرار گرفته. همین جستجوی jetsearch هست که کنده که البته طبیعی هم هست. چون MySQL یک Full Table Scan روی تمامی row های wp_posts و wp_postmetaانجام میده
سایت روی vps داخل ایران قرار داره که کانفیگ معمولی (۴ هسته shared و ۶ گیگ رم) داره به همراه آپاچی و لود cpu اش هم در htop همیشه زیر ۱ هست. Redis هم نصب شده تا جستجوهای فیلترها در رم کش بشه
به دنبال شخصی هستیم که بتونه جستجوی jet search و jetsmart filter رو از سریعتر کنه (خصوصا jet search رو)
لطفا هم راهکار سریع و ارزانتر و هم راه کار تخصصی تر پیشنهاد بدید
طبق بررسی ما یکی از راهکارهای ارزانتر استفاده از MySQL Full-Text و ایجاد جدول جداگانه و ایندکس کردن عنوان و Body ها در اون جدول هست. سرچ باید از روی این جدول انجام بشه و نتیجهها به لیستینگ فعلی JetEngine وصل بشن، بدون اینکه فیلترهای فعلی سایت بههم بریزه.
همچنین یکی از راهکارهای حرفه ای هم میتونه استفاده از elastic search به صورت self-hosted و انجام tuningهای مربوطه باشه
با تشکر
مهارتهای مورد نیاز
MySQL
پی اچ پی (PHP)
برنامه نویسی تحت وب
Elasticsearch
سرویسهای مرتبط
فریلنسرهایی که در این پروژه پیشنهاد ارسال کردهاند
admidpk4.95(52) امتیاززمان تحویل: 5 روزارسال پیشنهاد در: