الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

بحث بالعربي

بدأه C#Dev في 3 يوليو 2011 · 10 رد · 723 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

إخواني أنشأت موقع على طريقة cms بلغة #C, يمكنني إضافة العديد من الصفحات تحتوي على جمل باللغة العربية ورموز كل صفحة يتم تخزينها في حقل داخل قاعدة البيانات وليكن اسم الحقل ( pages )

ما أريده الان هو إرسال قيمة سواء نص أو رمز يتم البحث عن قيمة مطابقة لها في سجلات الحقل pages

قمت بعدة محاولات ولكنني فشلت , حتى توصلت إلى الطريقة التالية

SELECT * FROM Menu WHERE Text COLLATE Arabic_CI_AS Like @find or Page_Details COLLATE Arabic_CI_AS Like @find

ولكن مشكلتها أنها تبحث في أول كلمة من كل حقل موجود في pages في حال تطابقت مع الكلمة المراد البحث عنها يتم عرضها في نتائج البحث وإذا لم تطابق تتجاهل باقي بيانات الحقل وتنتقل للسجل التالي

#2

السلام عليكم :)

قم باضافة علامة % قبل وبعد اسم كل متغير.. فائدتها مثل علامة النجمة * في الدوز وفي عمليات البحث عن الملفات..

وسيكون الاستعلام تقريباً كالتالي:

SELECT * FROM Menu WHERE Text COLLATE Arabic_CI_AS Like '%' & @find & '%' or Page_Details COLLATE Arabic_CI_AS Like '%' & @find & '%'

طبعاً تستطيع استخدام علامة % ضمن كلمة البحث..

مثلا: السلام%ته

سيجد أي نتيجة تحتوي على: السلام عليكم ورحمة الله وبركاته!

مع تمنياتي لك بالتوفيق في الموقع..

والسلام عليكم ورحمة الله وبركاته :)

تم تعديل هذه المشاركة بواسطة AmeenSnw في 3 يوليو 2011 في 22:05

#3

شكرا على المشاركة ,,

جربتها مسبقا أخي AmeenSnw وكانت نتيجتها البحث في الكلمة الأولى من البيانات الموجودة في الحقل

تبحث عن أي تطابق في الكلمة الأولة في حال كان هناك حرف مطابق تظهر النتيجة من ضمن نتائج البحث وفي حال عدم تطابق أي حرف يتم تجاهل باقي النصوص المكتوبة في الحقل

تم تعديل هذه المشاركة بواسطة C#Dev في 3 يوليو 2011 في 22:16

#4

السلام عليكم ورحمه الله وبركاته

اخي اذا كان نوع الحقل Nvarchar او Ntext جرب الاستعلام التالي

SELECT * FROM Menu WHERE Text Like N'% @find %'

.:: Wish to become better and better ::.

#5

شكرا على مرورك أخي VB Helper

الحقل من نوع Nvarchar ,, أضفت حرف "N" كما طلبت ,, والنتيجة هي خالية لم تعد تظهر أي نتيجة

أرجوا إرفاق مثال يوضح استخدام البحث

أضفت العلامة التالية [] فأصبح الكود

SELECT * FROM Menu WHERE Text COLLATE Arabic_CI_AS Like '%[@find]%' OR Page_Details COLLATE Arabic_CI_AS Like '%[@find]%'

وكانت النتيجة إظهار كل حقل يحتوي على قيمة أو رمز باللغة إنجليزية .

#6

السلام عليكم

1- الطريقة السريعة للبحث هي استبدال الفراغات ب %

where pages like '%الفريق%العربي%'

لكن المشكلة اذا اختلف ترتيب الكلمة لن تظهر نتائج مثل "العربي فريق"

2-استخدام and بين الكلمات

 where pages like '%العربي%'  and  pages like '%الفريق%'

3-من الافضل استخدام ال Full-text في مثل هذه الحالات ان امكن ذلك .

#7

عزيزي لو قمت بتغير data type

مثلا منvarchar to navchar

char to nchar

text to ntext

تحياتي

وَعَبْدٌ قَدْ يَنامُ عَلَى حَرِيرٍ ××× وَذُو نَسَبٍ مَفَارِشُهُ التُّرَابُ

#8

شكرا على مروركم TareqVB - EMNALI

اقتباس

عزيزي لو قمت بتغير data type

مثلا منvarchar to navchar

char to nchar

text to ntext

جميع الحقول في قاعدة البيانات تحتوي على حرف N قبل نوع الحقل

اقتباس

3-من الافضل استخدام ال Full-text في مثل هذه الحالات ان امكن ذلك .

أخي TareqVB ياريت توضح طريقة إضافة خدمة Full-text إلى SQL SERVER حتى أضيفها إلى حقل pages هنل هناك حزمه أضيها إلى SQL SERVER أم يجب أن أحصل على نسخه محدده من SQL SERVER

تم تعديل هذه المشاركة بواسطة C#Dev في 4 يوليو 2011 في 21:42

#9

السلام عليكم ورحمه الله وبركاته

اخي ال FullTextSearch هي ميزه موجوده ضمن ال SQL Server , شوف الروابط التالية

http://msdn.microsoft.com/en-us/library/ms142571.aspx

http://www.wherecanibuyit.co.uk/ASP/full-text-search.html

بس اخي الي مستغرب منه ايش المشكلة من كودي السابق في البحث؟!!

.:: Wish to become better and better ::.

#10

السلام عليكم :)

عفواً لقد أخطأت في كتابة الاستعلام السابق بسبب العجلة.. آسف..

استبدل & بعلامة الجمع +

حيث سيكون الاستعلام كالتالي:

SELECT * FROM Menu WHERE Text COLLATE Arabic_CI_AS Like '%' + @find + '%' or Page_Details COLLATE Arabic_CI_AS Like '%' + @find + '%'

لقد جربته وهو فعال.. أما السابق فسيعطيك رسالة خطأ عند علامة & مباشرة!

والسلام عليكم ورحمة الله وبركاته :)

تم تعديل هذه المشاركة بواسطة AmeenSnw في 4 يوليو 2011 في 23:30

#11

مرحبا أخواني من جدد ,, الحمد الله تم معرفة طريقة البحث.

أولا : طريقة البحث التالية صحيحة بأستخدام الباراميتر ولكنها لمتعمل معي

SELECT * FROM Menu WHERE Text COLLATE Arabic_CI_AS Like @find or Page_Details COLLATE Arabic_CI_AS Like @find

وهذه الطريقة صحيحة أيضا, كما أنها لم تعمل معي

SELECT * FROM Menu WHERE Text COLLATE Arabic_CI_AS Like '%' + @find + '%' or Page_Details COLLATE Arabic_CI_AS Like '%' + @find + '%'

ثانيا : خدمة Full-text

هذه الخدمة موجودة ضمن sql server , عليك إختيارها أثناء تنصيب sql server الرابط التالي يشرح طريقة عملها

Using Full Text Search in SQL Server 2008

بالرغم من أني متأكد من أختيار كافة الخدمات أثناء تنصيب لل sql server لكن هذه الخدمة لم تكن موجودة أثناء تشغيل لل sql server حاولت التعامل معها من خلال الكود كان يظهر رسالة خطأ

مما جعلني أنصب ال sql server على جهاز أخر وكانت المفاجئة تعليمت select ...from ..where.. like تعمل بشكل جيد خدمة Full-text أيضا ممتازه , كما جربتها على جهاز أخر أشتغلت بطريقة ممتازة

إذا لماذا لم تكن تعمل معي على laptop السبب هو !!!!

نظام الويندوز , نظام الويندوز الموجود على laptop هو 64X لم تكن تعمل جيدا على هذا النظام ,أما نظام 32X كانت تعمل بطريقة ممتازة

هذه تجربة حصلت معي أحببت أن أكملها وأنقل لكم النتيجة التي توصلت لها.

شكرا على كل من شارك في الموضوع.

مواضيع مشابهة