اتخطّى للمحتوى

المرحلة 03 · الكتالوج والتجارةدرس 17 من 3413 دقيقة قراءةآخر تحديث:

Lesson 17 / 34

Search & Filtersالبحث والفلاتر.

إزاي العميل بيلاقي المنتج. محرّك البحث وفهرسه، الخصائص القابلة للبحث وأوزانها، الـ layered navigation، والتخصيص والتشخيص.

● بحث Elasticsearch Layered Nav الأداء

البحث في Magento 2 بيتم في محرّك خارجي، OpenSearch أو Elasticsearch، بيستقبل نسخة من بيانات المنتجات من فهرس catalogsearch_fulltext. النتايج بتترتّب بالصلة حسب Search Weight لكل خاصية، والفلاتر الجانبية بتتحسب من نفس الاستعلام بالـ aggregations. الفلترة بتشتغل مع خصائص Dropdown أو Multiselect بس، وأول حاجة تشيّك عليها لما حاجة ماتظهرش هي الفهرسة.

// ليه ده مهم تجارياً العميل اللي مابيلاقيش المنتج مابيشتريهوش. البحث والفلاتر هما الطريقتين الأساسيتين للوصول للمنتجات في أي متجر فيه أكتر من بضع مئات صنف. تحسين بسيط هنا بيأثر على المبيعات أكتر من تحسينات كتير في أماكن تانية.
◆ Part 1 — الفهم
01

الصورة الكاملة

من كتابة الكلمة لعرض النتايج.

كلمة البحث
محرّك البحث
ترتيب بالصلة
نتايج + فلاتر
المكوّنات الأربعة
component
محرّك البحث
Elasticsearch أو OpenSearch — خدمة مستقلة عن Magento.
دورهبيخزّن نسخة من بيانات المنتجات وبيبحث فيها بسرعة.
فهرس البحث
نسخة المنتجات المجهّزة للبحث.
دورهبيتحدّث لما المنتجات تتغيّر.
الصلة (Relevance)
ترتيب النتايج حسب قربها من المطلوب.
دورهبيتحدد بأوزان الخصائص.
Layered Navigation
الفلاتر الجانبية بأعدادها.
دورهبتتحسب من نفس نتيجة البحث.
الملاحظة المهمة

الـ فلاتر والبحث بيشتغلوا من نفس الفهرس. لما تفلتر، Magento بيعيد الاستعلام بشرط إضافي — فالفلاتر مش طبقة منفصلة، هي جزء من نفس الاستعلام.

تشبيه زي فهرس آخر كتاب. مش بتقرا الكتاب كله عشان تلاقي كلمة — بتبص في الفهرس اللي متجهّز مقدماً. لو الفهرس قديم، هتلاقي إشارات لصفحات اتغيّرت — وده بالظبط اللي بيحصل لما فهرس البحث مايتحدّثش.
• • •
02

محرّك البحث

خدمة منفصلة لازم تكون شغّالة.

Elasticsearch و OpenSearch

الاتنين محرّكات بحث مبنية على نفس الأساس. OpenSearch نسخة مفتوحة انفصلت عن Elasticsearch، والنسخ الحديثة من Magento بتدعم الاتنين.

!
Magento مابيشتغلش من غير محرّك بحث. من نسخة 2.4، ده شرط إجباري مش اختياري — لو الخدمة واقفة، المتجر كله بيقع مش البحث بس. ده أول حاجة تشيّك عليها لو الموقع فجأة بيدي أخطاء غريبة.
الإعداد

من Stores → Configuration → Catalog → Catalog → Catalog Search: نوع المحرّك، العنوان، المنفذ، وبادئة الفهرس.

فحص الاتصالbash
# هل الخدمة شغّالة؟
curl http://localhost:9200

# الفهارس الموجودة
curl http://localhost:9200/_cat/indices?v

# صحة الخدمة
curl http://localhost:9200/_cluster/health?pretty
بادئة الفهرس — مهمة

الإعداد Index Prefix بيحدد اسم الفهرس. لو أكتر من مشروع بيستخدموا نفس سيرفر البحث، لازم كل واحد ببادئة مختلفة.

!
لو staging و production على نفس سيرفر البحث بنفس البادئة، هيدهسوا فهارس بعض — وهتلاقي منتجات staging ظاهرة في نتايج البحث على production. نفس منطق أرقام قواعد بيانات Redis.
• • •
◆ Part 2 — البحث
03

فهرس البحث

إزاي بيتبني وامتى بيتحدّث.

الفهرس المسؤول

catalogsearch_fulltext — بيجمّع بيانات المنتجات ويبعتها لمحرّك البحث.

إيه اللي بيدخل فيه
  • الخصائص المعلّم عليها searchable.
  • الخصائص المعلّم عليها filterable (عشان الفلاتر).
  • بيانات التوفّر والسعر والأقسام.
  • خصائص الأبناء في المنتجات المركّبة.
i
النقطة الأخيرة مهمة: البحث عن "أحمر" بيلاقي الأب لو واحد من أبنائه أحمر. الفهرس بيجمّع خصائص الأبناء في وثيقة الأب — وده اللي بيخلّي الفلاتر تشتغل على الـ configurable.
أوامر الفهرسةbash
# حالة فهرس البحث
bin/magento indexer:status catalogsearch_fulltext

# إعادة بناء
bin/magento indexer:reindex catalogsearch_fulltext

# الوضع — Schedule أفضل في production
bin/magento indexer:show-mode catalogsearch_fulltext
bin/magento indexer:set-mode schedule catalogsearch_fulltext
!
السبب الأول لـ "منتج مش ظاهر في البحث": الفهرس مش متحدّث. قبل أي تشخيص تاني، شغّل indexer:status. ولو على Schedule، تأكد إن الـ cron شغّال — من غيره الفهرس مابيتحدّثش أبداً.
• • •
04

خصائص البحث والأوزان

إزاي تتحكم في ترتيب النتايج.

جعل خاصية قابلة للبحث

من Stores → Attributes → Product، اختار الخاصية، ومن Storefront Properties حدّد Use in Search.

الوزن — Search Weight

رقم من 1 لـ 10 بيحدد أهمية الخاصية في ترتيب النتايج. الأعلى بيرفع المنتج في النتايج لما الكلمة تتطابق مع الخاصية دي.

attribute · suggested weight
اسم المنتج
أعلى وزن — 8 إلى 10.
ليهالتطابق مع الاسم أقوى إشارة على الصلة.
SKU
وزن عالي — 6 إلى 8.
ليهالعميل اللي بيكتب SKU عارف بالظبط عايز إيه.
الوصف المختصر
وزن متوسط — 3 إلى 5.
ليهمفيد بس أقل دقة من الاسم.
الوصف الكامل
وزن منخفض — 1 إلى 2.
حذروزن عالي هنا بيطلّع نتايج غير دقيقة، لأن الكلمة ممكن تكون عابرة في النص.
!
كل خاصية قابلة للبحث بتكبّر الفهرس وبتبطّئ إعادة البناء. متعلّمش على كل الخصائص — اسأل: "هل العميل هيكتب الكلمة دي وهو بيدوّر؟" لو لأ، سيبها مقفولة.
مثال على الأثر

لو خليت الوصف الكامل بوزن 10، البحث عن "قطن" هيرجّع أي منتج ذكر كلمة قطن في وصفه — حتى لو بيقول "مش مصنوع من قطن". الأوزان المتوازنة بتمنع ده.

• • •
05

المرادفات والتحسينات

أدوات جاهزة بتحسّن النتايج من غير كود.

tool
Search Synonyms
كلمات مترادفة تتعامل كواحدة.
مثال"موبايل، تليفون، هاتف" — العميل يلاقي نفس النتايج بأي كلمة.
Search Terms
إعادة توجيه كلمة لصفحة محددة، أو تعديل نتايجها.
مثال"عروض" تودّي لصفحة العروض مباشرة.
تقرير مصطلحات البحث
إيه اللي العملاء بيدوّروا عليه وكام نتيجة طلعت.
الأهمالكلمات اللي نتايجها صفر — دي فرص مبيعات ضايعة.
i
تقرير مصطلحات البحث كنز مهمل. بيوريك بالظبط إيه اللي العملاء عايزينه ومش لاقينه. كل كلمة بنتايج صفر هي إما منتج ناقص في الكتالوج، أو مرادف محتاج يتضاف، أو تسمية مختلفة عن اللي إنت مستخدمها. راجعه شهرياً.
اللغة العربية — اعتبار خاص

العربي فيه تحديات: الهمزات (أحمد/احمد)، التاء المربوطة (شنطة/شنطه)، والتشكيل. العملاء بيكتبوا بطرق مختلفة، والمحرّك بيتعامل معاها كلمات مختلفة.

!
لو المتجر عربي، راجع تقرير مصطلحات البحث بعناية — هتلاقي نفس الكلمة مكتوبة بكذا طريقة، بعضها بنتايج وبعضها بصفر. ضيفهم كمرادفات. ولو المشكلة كبيرة، فيه إعدادات تحليل نصوص في المحرّك بتتعامل مع ده — بس دي محتاجة خبرة في إعداد الـ Elasticsearch نفسه.
• • •
◆ Part 3 — الفلاتر
06

Layered Navigation

الفلاتر الجانبية — إزاي بتشتغل.

إيه هي

الفلاتر اللي بتظهر جنب نتايج القسم أو البحث، وكل خيار جنبه عدد المنتجات.

اللون
أحمر(12)
أزرق ✓(8)
أسود(24)
المقاس
S(5)
M(3)
السعر
0 — 500(6)
500 — 1000(2)
إزاي الأعداد بتتحسب

ده الجزء الذكي. لما تختار "أزرق"، الأعداد في باقي الفلاتر بتتحدّث عشان تعكس المنتجات الزرقا بس. المقاس M بقى (3) مش (30).

ليه ده مهم

بيمنع النتايج الفاضية. العميل مابيقدرش يختار تركيبة مالهاش منتجات، لأن الخيار ده هيبقى (0) أو مش ظاهر أصلاً.

تشبيه زي موظف مبيعات شاطر. تقوله "عايز أزرق"، فيرد "تمام، عندي منه مقاس S و M بس". مش بيسيبك تطلب حاجة يعرف إنها مش موجودة. الأعداد المتحدّثة هي اللي بتعمل الدور ده.
i
الأعداد دي بتتحسب من محرّك البحث في نفس الاستعلام (بآلية اسمها aggregations). فمفيش استعلامات إضافية لكل فلتر — وده اللي بيخلّيها سريعة رغم إن الحسبة معقّدة.
• • •
07

أنواع الفلاتر

كل نوع وسلوكه.

filter type
فلتر الخصائص
على خاصية select أو multiselect.
شرطلازم النوع ده. الخصائص النصية مابتشتغلش في الفلاتر.
فلتر السعر
نطاقات سعرية، تلقائية أو محددة.
إعدادتقدر تحدد خطوة ثابتة أو تسيبه يحسبها.
فلتر القسم
تصفية بالأقسام الفرعية.
امتىبيظهر في نتايج البحث أكتر من صفحات الأقسام.
فلتر التوفّر
المتاح بس.
امتىلو بتعرض المنتجات المنتهية في الكتالوج.
إعدادات الخاصية للفلترة
setting
Use in Layered Navigation
No · Filterable (with results) · Filterable (no results)
الفرقالأولى بتخفي الخيارات اللي نتايجها صفر، التانية بتعرضها.
Use in Search Results Layered Navigation
هل تظهر في فلاتر نتايج البحث كمان.
ملاحظةإعداد منفصل — ممكن تظهر في الأقسام مش في البحث.
Position
ترتيب ظهور الفلتر.
امتىحط الأهم فوق — العميل بيفلتر بالأول غالباً.
i
اختار "with results" عادة. عرض خيارات بنتايج صفر بيدي العميل إحساس إن الموقع مليان وهو مش كده، وبيخلّيه يضغط على حاجة تطلّعله صفحة فاضية. الاستثناء لو عايز العميل يعرف إن المقاس ده موجود عندك عموماً بس مش متاح دلوقتي.
• • •
08

إعداد خاصية للفلترة

خطوة بخطوة، والشروط اللي لازم تتحقق.

الشروط الإجبارية
  • نوع الخاصية select أو multiselect — مش text.
  • Use in Layered Navigation = Filterable.
  • المنتجات ليها قيم فعلاً في الخاصية دي.
  • إعادة فهرسة ومسح كاش.
إنشاء خاصية قابلة للفلترة بالكودphp
$eavSetup->addAttribute(
    Product::ENTITY,
    'fabric',
    [
        // لازم int + select عشان الفلترة تشتغل
        'type'     => 'int',
        'input'    => 'select',
        'label'    => 'Fabric',
        'source'   => Table::class,

        // 1 = with results, 2 = no results
        'filterable'           => 1,
        'filterable_in_search' => true,

        // البحث النصي — اختياري
        'searchable'    => true,
        'search_weight' => 3,

        // لازم global للفلترة الصحيحة
        'global' => ScopedAttributeInterface::SCOPE_GLOBAL,

        'option'  => [
            'values' => ['Cotton', 'Silk', 'Wool'],
        ],
        'group'   => 'General',
    ]
);
بعد الإنشاء — إجباريbash
bin/magento setup:upgrade
bin/magento indexer:reindex catalogsearch_fulltext
bin/magento cache:clean
!
"عملت الخاصية والفلتر مش ظاهر" — امشي على الترتيب ده: النوع select؟ ← filterable مفعّلة؟ ← فيه منتجات ليها قيم؟ ← الفهرسة اتعملت؟ ← الكاش اتمسح؟ الشرط التالت بيتنسي كتير — الفلتر مابيظهرش لو مفيش ولا منتج ليه قيمة.
• • •
09

البحث في الكود

تنفيذ بحث برمجياً.

بحث عن طريق محرّك البحثphp
use Magento\Search\Api\SearchInterface;
use Magento\Framework\Api\Search\SearchCriteriaBuilder;
use Magento\Framework\Api\FilterBuilder;

class ProductSearch
{
    public function __construct(
        private readonly SearchInterface $search,
        private readonly SearchCriteriaBuilder $criteriaBuilder,
        private readonly FilterBuilder $filterBuilder
    ) {}

    public function find(string $term): array
    {
        // الفلتر الخاص بالبحث النصي
        $filter = $this->filterBuilder
            ->setField('search_term')
            ->setValue($term)
            ->create();

        $criteria = $this->criteriaBuilder
            ->addFilters([$filter])
            ->setPageSize(20)
            ->create();

        // لازم نحدد الطلب — quick_search_container
        $criteria->setRequestName('quick_search_container');

        $result = $this->search->search($criteria);

        $ids = [];
        foreach ($result->getItems() as $item) {
            $ids[] = (int) $item->getId();
        }

        return $ids;
    }
}
شرح النقاط المهمة
  • search_term — الحقل الخاص بالبحث النصي، مش خاصية عادية.
  • setRequestName — بيحدد إعدادات البحث المستخدمة. quick_search_container للبحث السريع.
  • بيرجّع IDs بس — لازم تحمّل المنتجات بعدها من الـ repository.
!
لو نسيت setRequestName، البحث هيرمي استثناء أو يرجّع نتايج غلط. ده بيحدد أي إعداد بحث يستخدم — وده معرّف في search_request.xml.

بحث نصي

استخدم SearchInterface — بيمرّ بمحرّك البحث والصلة.

فلترة بسيطة

استخدم ProductRepository — أبسط وأسرع لو مفيش بحث نصي.

i
القاعدة: لو عندك كلمة بحث من المستخدم، استخدم محرّك البحث عشان تستفيد من الصلة. لو بتفلتر بقيم محددة بس (كل المنتجات الحمرا)، الـ repository أبسط وأسرع.
• • •
◆ Part 4 — العملي
10

الأداء والتشخيص

لما البحث يبطّئ أو النتايج تطلع غلط.

factor
عدد الخصائص القابلة للبحث
كل خاصية بتكبّر الفهرس وبتبطّئ البناء.
الحلراجعها — سيب اللي العميل بيدوّر بيه فعلاً.
عدد الفلاتر
كل فلتر = حسبة أعداد إضافية في كل صفحة.
الحلالفلاتر المفيدة بس. 15 فلتر بيبطّئ وبيربك العميل.
موارد محرّك البحث
الذاكرة المخصّصة للخدمة.
الحلراقب استهلاكها — القليل بيسبب بطء وأخطاء.
وضع الفهرسة
Save مقابل Schedule.
الحلSchedule في production — وإلا كل حفظ منتج بيعيد الفهرسة.
تشخيصbash
# حجم فهارس البحث
curl 'localhost:9200/_cat/indices?v&s=store.size:desc'

# هل المنتج موجود في الفهرس؟
curl 'localhost:9200/magento2_product_1/_search?q=sku:SKU-001&pretty'

# حالة الفهرس في Magento
bin/magento indexer:status catalogsearch_fulltext
شجرة التشخيص — منتج مش ظاهر
  • المنتج مفعّل ومتاح؟ — status و visibility.
  • مربوط بالـ website؟ — منتج مش مربوط مابيظهرش.
  • متوفّر؟ — حسب إعداد عرض المنتهي.
  • الفهرس متحدّث؟indexer:status.
  • موجود في محرّك البحث فعلاً؟ — الاستعلام فوق.
  • الكاش اتمسح؟
i
الخطوة الخامسة هي اللي بتحسم التشخيص. لو المنتج موجود في محرّك البحث وبرضه مش ظاهر للعميل، المشكلة في الكاش أو إعدادات العرض. لو مش موجود في المحرّك أصلاً، المشكلة في الفهرسة أو بيانات المنتج.
• • •
11

الفخاخ الشائعة

اقرا دي حتى لو مش هتقرا حاجة تانية.

  • خاصية text وتوقّع إنها تتفلتر — لازم select. الفخ الأول.
  • نسيان إعادة الفهرسة — السبب الأول لـ "مش ظاهر في البحث".
  • الفلتر مش ظاهر لأن مفيش منتجات ليها قيم — شرط بيتنسي.
  • نفس بادئة الفهرس لبيئتين — منتجات staging تظهر في production.
  • وزن عالي للوصف الكامل — نتايج غير دقيقة.
  • كل الخصائص searchable — فهرس ضخم وبناء بطيء.
  • 15 فلتر في صفحة — بطء وإرباك للعميل.
  • وضع الفهرسة على Save في production — كل حفظ منتج بيعيد الفهرسة.
  • إهمال تقرير مصطلحات البحث — فرص مبيعات ضايعة كل يوم.
  • نسيان setRequestName — استثناء أو نتايج غلط.
i
لو منتج مش ظاهر، اسأل بالترتيب: مفعّل ومربوط بالـ website؟الفهرس متحدّث؟موجود في المحرّك؟الكاش؟
• • •
12

أسئلة الإنترفيو

الأسئلة المتكررة.

Q1إزاي البحث بيشتغل في Magento؟
الإجابة: فهرس catalogsearch_fulltext بيجمّع بيانات المنتجات ويبعتها لمحرّك بحث خارجي (Elasticsearch أو OpenSearch). البحث بيتم في المحرّك مش في MySQL، والنتايج بتترتّب بالصلة حسب أوزان الخصائص. من 2.4 المحرّك شرط إجباري لتشغيل Magento.
Q2ليه خاصية مش ظاهرة في الفلاتر؟
الإجابة: الأسباب بالترتيب: نوعها مش select أو multiselect، أو Use in Layered Navigation مش مفعّلة، أو مفيش منتجات ليها قيم في الخاصية، أو الفهرسة والكاش. النوع النصي مابيشتغلش في الفلاتر أبداً.
Q3إيه الـ Layered Navigation وإزاي الأعداد بتتحسب؟
الإجابة: الفلاتر الجانبية بأعداد المنتجات. الأعداد بتتحسب من محرّك البحث في نفس الاستعلام بآلية الـ aggregations، وبتتحدّث مع كل اختيار عشان تعكس المنتجات المتبقية — وده اللي بيمنع العميل يوصل لنتايج فاضية.
Q4إيه الـ Search Weight؟
الإجابة: رقم من 1 لـ 10 بيحدد أهمية الخاصية في ترتيب النتايج. الاسم بياخد وزن عالي والوصف الكامل وزن منخفض — لأن الكلمة في الوصف ممكن تكون عابرة ومش دالة على الصلة.
Q5البحث بطيء — تحسّن إزاي؟
الإجابة: أراجع عدد الخصائص القابلة للبحث والفلاتر وأقلّلهم للمفيد، أتأكد إن الفهرسة على Schedule مش Save، وأراقب موارد محرّك البحث. وأشوف حجم الفهارس — لو ضخمة غير متوقّع، غالباً فيه خصائص مافيهاش داعي.
Q6منتج مش ظاهر في البحث — تشخّص إزاي؟
الإجابة: بالترتيب: المنتج مفعّل وظاهر ومربوط بالـ website؟ ← الفهرس متحدّث والـ cron شغّال؟ ← أستعلم محرّك البحث مباشرة عشان أشوف المنتج موجود فيه ولا لأ؟ ← الكاش. الاستعلام المباشر بيحسم إذا كانت المشكلة في الفهرسة ولا في العرض.

Search & Filters ✓

دلوقتي فاهم إزاي البحث بيشتغل من الفهرس لمحرّك البحث للصلة، وإزاي الفلاتر بتتحسب، وإزاي تعدّ خاصية للفلترة وتشخّص المشاكل.

الخلاصة: الفلاتر محتاجة خصائص select مش text، والفهرسة هي أول مكان تشوفه لما حاجة ماتظهرش، وتقرير مصطلحات البحث بيقولك إيه اللي العملاء مش لاقينه.

// magento 2 · search · layered navigation

خلّصت الدرس؟علّمه عشان تتابع تقدّمك في الكورس.

كاتب الدرس

Abdulrahman Masoud

عندك سؤال على الدرس أو محتاج مساعدة في مشروع Magento؟ كلّمني.

أسئلة شائعة

إزاي البحث بيشتغل في Magento 2؟

فهرس catalogsearch_fulltext بيجمّع بيانات المنتجات القابلة للبحث والفلترة مع السعر والتوفّر والأقسام وخصائص الأبناء، وبيبعتها لمحرّك بحث خارجي هو OpenSearch أو Elasticsearch. البحث والفلاتر بيتنفّذوا في المحرّك مش في MySQL، والنتايج بتترتّب بالصلة حسب أوزان الخصائص. من 2.4 المحرّك شرط إجباري لصفحات الكتالوج.

ليه الخاصية مش ظاهرة في فلاتر Layered Navigation؟

بالترتيب: نوعها لازم يكون Dropdown أو Multiple Select مش Text، و Use in Layered Navigation لازم يكون Filterable، ولازم يكون فيه منتجات في القسم ليها قيم فعلًا في الخاصية دي، وبعد كده إعادة فهرسة catalogsearch_fulltext ومسح الكاش. الشرط التالت بيتنسي كتير، لأن الفلتر مابيظهرش لو ولا منتج ليه قيمة.

إزاي أعمل خاصية قابلة للفلترة بالكود في Magento 2؟

في Data Patch نادي EavSetup::addAttribute بـ type int و input select و source Table، و'filterable' => 1 للفلترة مع النتايج أو 2 لعرض الخيارات اللي نتايجها صفر، وfilterable_in_search لو عايزها في فلاتر نتايج البحث، والـ scope Global. بعدها setup:upgrade وإعادة فهرسة البحث ومسح الكاش.

يعني إيه Search Weight في Magento 2؟

رقم من 1 لـ 10 على كل خاصية قابلة للبحث بيحدد أهميتها في ترتيب النتايج. الاسم ياخد وزن عالي والـ SKU وزن عالي والوصف المختصر متوسط والوصف الكامل وزن منخفض، لأن الكلمة في الوصف ممكن تكون عابرة ومش دالة على الصلة. كل خاصية searchable بتكبّر الفهرس، فماتعلّمش إلا على اللي العميل هيكتبه فعلًا.

منتج مش ظاهر في نتايج البحث في Magento 2، أشخّص إزاي؟

اتأكد إن المنتج Enabled والـ visibility بتاعه بتسمح بالبحث ومربوط بالـ website، وإن التوفّر مناسب لإعداد عرض المنتجات المنتهية. بعدها indexer:status ولو الفهرس على Schedule تأكد إن الـ cron شغّال. وأخيرًا استعلم المحرّك مباشرة على الـ SKU في فهرس magento2_product_1، فلو موجود المشكلة في الكاش أو العرض، ولو مش موجود المشكلة في الفهرسة.

إزاي أعمل بحث نصي برمجيًا في Magento 2؟

احقن Magento\Search\Api\SearchInterface وابني SearchCriteria بفلتر على الحقل الخاص search_term، وحدّد setRequestName('quick_search_container') عشان يستخدم إعدادات البحث السريع من search_request.xml. الميثود بترجّع IDs بس، فحمّل المنتجات بعدها من الـ repository. لو بتفلتر بقيم ثابتة من غير كلمة بحث، ProductRepository أبسط.

إزاي أحسّن نتايج البحث باللغة العربية في Magento؟

راجع تقرير Search Terms شهريًا، لأن الكلمات اللي نتايجها صفر إما منتج ناقص أو مرادف محتاج يتضاف. العربي فيه الهمزات والتاء المربوطة والتشكيل، فنفس الكلمة بتتكتب بكذا طريقة والمحرّك بيعتبرها كلمات مختلفة. ضيفها كـ Search Synonyms، ولو المشكلة كبيرة فيه إعدادات تحليل نصوص في المحرّك نفسه بس محتاجة خبرة في إعداده.