فلترة أكثر من كلمة في سيرش كونسول باستخدام Regex
20 دقيقة تقريبًا
في الدرس السابق اتفقنا على قاعدة هنمشي عليها طول الكورس: مش هنبدأ من Regex، هنبدأ من سؤال SEO.
النهاردة عندنا سؤال بسيط جدًا. افترض إنك فاتح Search Console، وعندك الكلمات دي:
- سعر ايفون 17
- اسعار ايفون 17
- تكلفة ايفون 17
- شراء ايفون 17
- أفضل ايفون 17
- ثمن ايفون 17
- مواصفات ايفون 17
وأنت عايز تعرف: الكلمات اللي الباحث بيسأل فيها عن السعر.
لو كنت عايز كلمة واحدة فقط، مثل "سعر"، ممكن تستخدم فلتر عادي. لكن المشكلة إن الناس مش بتبحث بنفس الصياغة. واحد يكتب "سعر"، والتاني "اسعار"، والتالت "تكلفة"، والرابع "ثمن".
أنت هنا مش محتاج تعمل أربع فلاتر منفصلة. أنت محتاج تقول لـ Search Console: وريني أي Query تحتوي "سعر" أو "اسعار" أو "تكلفة" أو "ثمن". هنا يبدأ أول استخدام فعلي لـ Regex.
قبل ما نكتب Regex، نفهم المشكلة
السؤال مش "ابحث عن كلمة". الشيء المشترك بين الكلمات مش كلمة واحدة، إحنا عندنا أكتر من احتمال: سعر، اسعار، تكلفة، ثمن. إذن المشكلة بتاعتنا هي "ابحث عن واحدة من عدة كلمات". وده أول شيء Regex هيحلّه لنا.
أول رمز هنتعلمه: |
الرمز | معناه ببساطة "أو". يعني لو كتبت سعر|تكلفة أنت بتقول: طابق "سعر" أو "تكلفة".
خلينا نجرب:
سعر|تكلفة- سعر ايفون
- تكلفة ايفون
- شراء ايفون
- أفضل ايفون
ليه؟ لأن كل Query ظهرت تحتوي واحدًا من الاحتمالين اللي كتبناهم.
زوّد عدد الاحتمالات
دلوقتي بدل احتمالين عندنا أربعة: سعر، اسعار، تكلفة، ثمن. ممكن نكتب سعر|اسعار|تكلفة|ثمن ومعناها: سعر أو اسعار أو تكلفة أو ثمن. مفيش حاجة أعقد من كده حتى الآن. خلينا نختبره.
سعر|اسعار|تكلفة|ثمن- سعر ايفون 17
- اسعار ايفون في مصر
- تكلفة شراء ايفون
- ثمن ايفون 17 برو
- شراء ايفون بالتقسيط
- مواصفات ايفون
لاحظ إننا بنعمل نفس الحاجة اللي اتفقنا عليها في درس العقلية.
لكن Search Console لقى الكلمة إزاي؟
دي نقطة مهمة جدًا قبل ما نكمل. لما تكتب "سعر"، Search Console مش بيقول "لازم الـ Query تكون سعر فقط". هو افتراضيًا يستخدم Partial Match، يعني يبحث عن الـ Pattern في أي مكان داخل النص.
سعر- سعر ايفون
- كم سعر ايفون
- سعر ايفون في مصر
- اعرف سعر ايفون
لأن كلمة "سعر" موجودة داخل كل Query منهم. دي نقطة مهمة جدًا.
لأنك لو فاكر إن Regex لازم يطابق النص بالكامل، هتبني Patterns أعقد من اللي أنت محتاجها.
عندنا الـPattern ده، وعندنا خمس Queries. كام واحدة هتتطابق؟
iphone- iphone
- سعر iphone
- iphone 17 pro
- أفضل هاتف بديل iphone
- samsung
ليه samsung ما ظهرتش؟ لأن Search Console يبحث عن الـ Pattern داخل النص، مش لازم النص كله يساويه. في درس لاحق هنتعلم إزاي نقول له: النص يبدأ بكذا، أو النص بالكامل يكون كذا. لكن مش محتاجين ده دلوقتي.
طيب ليه هنستخدم الأقواس ()؟
إحنا ممكن نكتب سعر|اسعار|تكلفة|ثمن وده شغال. لكن غالبًا هتشوفه مكتوب بالشكل ده: (سعر|اسعار|تكلفة|ثمن). الأقواس () معناها إننا بنجمع جزء من الـ Pattern مع بعض. في المثال البسيط بتاعنا النتيجة تقريبًا واحدة سواء استخدمنا الأقواس أو لا، لكن بعدين هنحتاج نتعامل مع المجموعة كلها كجزء واحد من Pattern أكبر — فمن دلوقتي، لما تشوف () افهم "ده تجميع"، مش رمز غامض لازم تحفظه.
خلينا نفك Regex حقيقي جزء جزء. متبصش عليه كجملة واحدة:
- 1( — دول مجموعة واحدة
- 2سعر
- 3| — يعني أو
- 4اسعار
- 5| — يعني أو
- 6تكلفة
- 7| — يعني أو
- 8ثمن
- 9) — نهاية المجموعة
إذن المعنى: ابحث عن "سعر" أو "اسعار" أو "تكلفة" أو "ثمن". خلصت. لو أنت فاهم المعنى ده، أنت كتبت أول Regex فعلي.
تطبيق داخل Search Console
حاليًا Search Console يسمح لك باستخدام Regex على Queries أو Pages من تقرير الأداء. المسار يكون من الفلاتر: Add filter ← Queries أو Pages ← Custom (regex). وبعدها تختار Matches regex أو Doesn't match regex.
Regex. Doesn't match regex: وريني كل حاجة ما ينطبقش عليها — وده هيبقى مهم جدًا بعدين لما نعمل مثلًا Brand مقابل Non-brand، بنفس الـ Pattern بالظبط.أول استخدام SEO حقيقي: Brand Queries
افترض إن اسم البراند بتاعنا له أكثر من طريقة كتابة. مثلًا شركة افتراضية اسمها Tech Zone، والناس بتبحث: tech zone، techzone، تك زون، tech zone egypt، تك زون مصر. لو عملت Filter لكلمة tech zone فقط، ممكن تفقد techzone وكمان «تك زون». فممكن نعمل:
(tech zone|techzone|تك زون)- tech zone
- techzone
- تك زون
- best laptop
دلوقتي إحنا بنقول: أي Query تحتوي أي شكل من أشكال البراند دي، اعتبرها ضمن المجموعة اللي عايز أشوفها. لاحظ حاجة مهمة: Regex نفسه مش عارف إن دي Brand Queries. إحنا اللي قلنا له أسماء البراند المختلفة. هو فقط عمل Matching.
إيه اللي حصل لو كتبنا Regex ناقص؟
افترض إن عندنا كمان "تيك زون" لكن إحنا كتبنا نفس الـ Pattern اللي فوق:
(tech zone|techzone|تك زون)- tech zone
- techzone
- تك زون
- تيك زون
مثال آخر: الكلمات المرتبطة بالمقارنة
عندك: ايفون مقابل سامسونج، مقارنة ايفون وسامسونج، الفرق بين ايفون وسامسونج، سعر ايفون، أفضل ايفون. ممكن نبدأ بقاعدة بسيطة:
(مقارنة|مقابل|الفرق بين)- ايفون مقابل سامسونج
- مقارنة ايفون وسامسونج
- الفرق بين ايفون وسامسونج
- سعر ايفون
- أفضل ايفون
دلوقتي عندك Segment خاص بالـ Queries التي تحتوي Modifiers مرتبطة بالمقارنة. لكن متقولش "كل Queries المقارنة في الموقع". لأن واحد ممكن يبحث "ايفون ولا سامسونج" والـ Pattern بتاعنا مش هيجيبه. إذن الـ Regex يعكس القواعد اللي أنت كتبتها، مش كل الطرق الممكنة اللي الإنسان ممكن يصيغ بها نفس الفكرة.
Regex مش فاهم المرادفات من نفسه
لو كتبت "سعر"، Search Console مش هيقول "آه، تكلفة معناها قريب من سعر، هجيبها كمان". لا، هو مش Semantic Search. لو أنت عايز سعر واسعار وتكلفة وثمن، لازم تصفهم أنت بنفسك.
هل المسافات حوالين | تفرق؟
بص على سعر|تكلفة و سعر | تكلفة. التاني فيه مسافات فعلية حوالين الـ |. والمسافة في Regex مش مجرد تنسيق بصري بالضرورة، هي Character ممكن تدخل في المطابقة. لذلك وإحنا بنكتب Alternation بسيط، الأفضل نكتب الكلمات لاصقة بالخط المائل، إلا لو أنت فاهم بالضبط إن المسافات جزء من الشيء اللي عايز تطابقه.
Search Console لا يهتم بحالة الأحرف افتراضيًا
دي هنحتاجها أكتر مع الإنجليزية. لو عندك iphone وIPHONE وiPhone، وكتبت «iphone»، مطابقة Regex في Search Console افتراضيًا غير حساسة لحالة الأحرف:
iphone- iphone
- IPHONE
- iPhone
يعني مش محتاج تكتب (iphone|IPHONE|iPhone) علشان السبب ده فقط. في وقت لاحق هنتعلم إزاي نخلي المطابقة حساسة لحالة الأحرف لما يكون عندنا سبب حقيقي.
هل لازم أحط () كل مرة أستخدم |؟
تقنيًا، لا. لكن في الكورس هنعود نفسنا غالبًا لما يكون عندنا مجموعة خيارات واضحة نكتبها بالأقواس، لأنها أوضح في القراءة، والأهم إنها تجهزنا لما نبدأ نبني Patterns أكبر.
تعال نعمل تحليل صغير كامل
افترض إن عندك موقع لبيع اللابتوبات، وسؤالنا: عايز أدرس الكلمات اللي الباحث ذكر فيها السعر بشكل واضح.
- 1نحدد الكلمات: سعر، اسعار، تكلفة، ثمن
- 2نبني أبسط
Pattern: (سعر|اسعار|تكلفة|ثمن) - 3نتوقع النتيجة قبل التشغيل
- 4نطبّق:
Query ← Custom (regex) ← Matches regex - 5نراجع: هل ظهرت Queries مش متوقعة؟ هل في كلمات زي «بكام» أو «price» فاتتنا؟
(سعر|اسعار|تكلفة|ثمن)- لابتوب لينوفو
- سعر لابتوب لينوفو
- اسعار لابتوبات لينوفو
- تكلفة لابتوب للالعاب
- شراء لابتوب لينوفو
- ثمن لابتوب لينوفو
- أفضل لابتوب للعمل
- لابتوب بالتقسيط
هنا ظهر شيء مهم جدًا
بعد ما شفت البيانات اكتشفت كمان «ايفون بكام» و"iphone price egypt". السؤال: هل دول جزء من الـ Segment اللي أنا ببنيه؟ لو نعم، نضيفهم:
(سعر|اسعار|تكلفة|ثمن|بكام|price)- ايفون بكام
- iphone price egypt
- سعر ايفون
لاحظ طريقة الشغل. إحنا ما حاولناش من أول دقيقة نتخيل كل احتمال موجود في اللغة. بدأنا Pattern بسيط، شفنا النتائج، تعلمنا من البيانات، ووسعناه. دي طريقة عملية جدًا في بناء Regex.
خطأ شائع: بناء Regex من خيالك فقط
لو أنت بتبني Brand Regex أو Commercial Regex، متقعدش فقط تخمن الكلمات اللي الناس ممكن يستخدموها. ابدأ بحاجة منطقية، وبعدها راجع بيانات Search Console الفعلية:
- 1البيانات
- 2Pattern أولي
- 3اختبار
- 4اكتشاف صيغ جديدة
- 5تحسين Pattern
إحنا اتعلمنا إيه فعلًا؟
لحد هنا إحنا اتعلمنا 3 حاجات فقط. أولًا: النص العادي — لو كتبت "سعر" إحنا بنبحث عن النص "سعر"، وداخل Search Console المطابقة افتراضيًا Partial Match. ثانيًا: | يعني "أو". ثالثًا: () نستخدمها لتجميع أجزاء Pattern مع بعض. بس. مش محتاج تحفظ 15 رمز زيادة.
عندك: شراء ايفون، سعر ايفون، ايفون بالتقسيط، تكلفة ايفون، ثمن ايفون، أفضل ايفون، اسعار ايفون. عايز تعمل Pattern للكلمات المرتبطة بالسعر. اكتب الـRegex قبل ما تشوف الحل.
- شراء ايفون
- سعر ايفون
- ايفون بالتقسيط
- تكلفة ايفون
- ثمن ايفون
- أفضل ايفون
- اسعار ايفون
عندك براند افتراضي، الناس بتكتبه بالشكل ده: seo lab، seolab، سيو لاب. اكتب Regex يجمع الثلاث صيغ.
- seo lab
- seolab
- سيو لاب
لو استخدمته مع Matches regex هتطلع Queries البراند، ولو استخدمته مع Doesn't match regex هتستبعدها من النتائج.
عندك: مقارنة ايفون وسامسونج، ايفون مقابل سامسونج، الفرق بين ايفون وسامسونج، أفضل ايفون، سعر ايفون. اكتب Pattern يجمع الكلمات الثلاث الخاصة بالمقارنة.
- مقارنة ايفون وسامسونج
- ايفون مقابل سامسونج
- الفرق بين ايفون وسامسونج
- أفضل ايفون
- سعر ايفون
قبل ما تعتبر النتيجة كاملة، فكر: هل ممكن المستخدم يعبر عن المقارنة بطريقة تانية؟ مثل «ايفون ولا سامسونج». لو الإجابة نعم، يبقى عندك مثال عملي على إن الـPattern محتاج يتعلم من البيانات.
الاختبار التطبيقي
عندك Queries عن macbook pro. حدد بنفسك الكلمات أو العبارات اللي تعتبرها مرتبطة بالسؤال عن السعر، واكتب Regex واحد يجمعها.
Segment السعر لـ macbook pro
اكتب Pattern واحد يجمع كل الكلمات المرتبطة بالسعر، ويستبعد أي كلمة تانية.
- · سعر macbook pro
- · macbook pro price
- · تكلفة macbook pro في مصر
- · ثمن macbook pro
- · macbook pro بكام
- · اسعار macbook في مصر
- · شراء macbook pro
- · أفضل macbook pro
- · مواصفات macbook pro
بعد ما بنيت الـ Segment، فكر في سؤال SEO واحد ممكن تستخدمه للإجابة عليه — مش "عرفت أطلع الكلمات"، لكن حاجة زي: هل الـ Queries المرتبطة بالسعر بتحقق CTR أقل من باقي Queries؟ أو أي Landing Pages بتظهر أكثر على الكلمات السعرية؟ هنا Regex بدأ يتحول من فلتر إلى أداة في التحليل.
قبل ما تروح للدرس التالي
لو فهمت الدرس، المفروض تبص على (سعر|اسعار|تكلفة|ثمن) ومتشوفش كود غريب. تشوف جملة بسيطة معناها "سعر أو اسعار أو تكلفة أو ثمن"، وتكون فاهم كمان إن Search Console مش بيحاول يفهم معنى الكلمات دي. أنت اللي اخترتها.
في الدرس التالي هنواجه مشكلة مختلفة. لحد دلوقتي لو كتبنا «iphone»، Search Console ممكن يلاقيها في أي مكان داخل Query. لكن ماذا لو أنا عايز Query تبدأ بكلمة معينة؟ أو تنتهي بكلمة معينة؟ أو تساوي عبارة معينة بالضبط؟ هنا هنحتاج نتحكم في مكان المطابقة، وده هيكون أول مرة نبدأ نبني Pattern أدق من مجرد البحث عن كلمات.
أحسنت، وصلت إلى نهاية الدرس.