$text (البحث النصي الكامل)
آخر تحديث: 2026-10-09
$text (البحث النصي الكامل)
يُجري $text بحثًا نصيًا كاملًا على الحقول المغطاة بفهرس نصي. `{ $text: { $search: 'coffee shop' } }`. أنشئ فهرسًا نصيًا أولًا (db.collection.createIndex({ content: 'text' }))؛ يمكن للمجموعة أن تملك فهرسًا واحدًا على الأكثر. يطبق استخلاص الجذور وإزالة الكلمات الشائعة، ويدعم البحث بالعبارات بين علامتي اقتباس، ويوفر درجة ملاءمة عبر $meta: 'textScore'.
| الفئة | العنصر والتقييم |
|---|---|
| إصدار MongoDB | 2.6+ |
| لغة المثال | mongosh (الطرفية) |
📝 الصيغة
{ $text: { $search: <string>, $language: <language>, $caseSensitive: <boolean> } }
⚙️ المعلمات
| search | الكلمات المفتاحية أو العبارة المراد البحث عنها. |
|---|---|
| language | اختياري؛ لغة تجذيع الكلمات (stemming). |
| caseSensitive | اختياري؛ ما إذا كان البحث يراعي حالة الأحرف. |
القيمة المرجعة:مؤشر المستندات المطابقة
▶ مثال
نفّذ الأوامر التالية في mongosh المحلي لديك (يتطلب تشغيل mongod):
// $text: بحث نصي كامل عن coffee shop
// يتطلب فهرسًا نصيًا أولًا
db.articles.find({ $text: { $search: 'coffee shop' } })
// الترتيب حسب الملاءمة (textScore)
db.articles.find(
{ $text: { $search: 'coffee' } },
{ score: { $meta: 'textScore' } }
).sort({ score: { $meta: 'textScore' } })
المخرجات:
// يُرجع المقالات المطابقة لجذور الكلمتين coffee/shop؛ الاستعلام الثاني يرتب حسب الملاءمة
📌 ملاحظات
- أنشئ فهرسًا نصيًا أولًا؛ فهرس واحد على الأكثر لكل مجموعة
- استخلاص الجذور: البحث عن coffee يطابق أيضًا coffees
- على خلاف $regex، يستخدم $text الفهرس النصي ويناسب النصوص الكبيرة
🏷️ وسوم ذات صلة
💡 حالات ذات صلة
📚 دروس ذات صلة
❓ الأسئلة الشائعة
Qماذا يجب أن أفعل قبل استخدام $text؟
Aأنشئ فهرسًا نصيًا أولًا: db.coll.createIndex({ content: 'text' }).
Qما الفرق بين $text و $regex؟
A$text بحث نصي مفهرس على مستوى الكلمات مع استخلاص الجذور والدرجات؛ بينما $regex مطابقة أنماط، وعادة ما يكون مسحًا كاملًا.
Qكيف أرتب نتائج $text حسب الملاءمة؟
Aاعرض الدرجة بـ $meta: 'textScore'، ثم رتب عبر sort({ score: { $meta: 'textScore' } }).