درخصوص جستجو

m1pfard

Member
سلام.

اصل مطلب: ما یه چندتا جدول تو دیتابیس داریم که داده هاییرو به فرمت رشته (البته html) رو شامل میشن.
حالا میخوایم یه بخش جستجو براشون داشته باشیم.
جستجوی معمولی (Select * From myTable Where text Like ....) داخل رشته رو میگرده که در این حالت کدهای html وCss و JS های احتمالی استفاده شده در داخل این رشته هم جزء نتایج برگشتی هستن.

یعنی اگه حرف P رو سرچ کنیم تمام صفحاتی که تگ <span> یا <p> دارن هم جزء خروجی ما هستن.
یه روش اینه که ما هنگام جستجو از تمام رشته ها کدهای HTML رو استخراج و حذف کنیم ولی فکر کنم اینطوری بار اضافی رو سرور بیاد اونم خیلی زیاد!!!

حالا اگه امکانش هست اساتید کمک نمایند.
 

milade

Member
دوست عزیز شما میتونی نتیجه رو توی یه لیبل یا با response.write بنویسی
من همیشه این کار رو میکنم و مشکلی ندارم با html .
اگه دیدی بر طرف نشد کدت رو بزار اینجا
پیروز باشی
 

m1pfard

Member
ممنون ولی هدفم نمایش نتیجه نبود.
بلکه میخواستم تو خود جستجو کدها رو در نظر نگیره.
 

milade

Member
سلام دوست گرامی .
ببخشید بد برداشت کردم
شما میتونید از server.htmlencode و server.htmldecode استفاده کنید
(برا ذخیره encode و نمایش decode )
پیروز باشی و پایدار
 

m1pfard

Member
سلام و خیلی ممنون.
راستش داشتم فکر میکردم چی میشد برنامه نویس یه چند ماه بالا نیاد!!!!!!!


این کد جستجوی منه:

PHP:
"SELECT [PageID], [PageTitle] FROM [tblPages] WHERE (PageTitle LIKE '%' + @SearchText + '%' or PageMenuTitle  LIKE '%' + @SearchText + '%' or PageKeyWords  LIKE '%' + @SearchText + '%'or PageDescribtion LIKE '%' + @SearchText + '%' or PageText  LIKE '%' + @SearchText + '%'  )"

این جستجو رکوردهایی رو که مقدار مورد نظر ما در فیلدهای مشخص شده ای قرار دارن رو بر می گردونه.
ولی داخل Sql Query دیگه من نمی تونم بهش بگم که اول مقدار رو encode یا decode کن و بعد مقایسه.

به نظرم چارش این بود که رکورد به رکورد تمام فیلدهایی رو که مایل به جستجو در محتواشون هستیم رو برگردونیم بعد html رو ازشون حذف و در نهایت داخل اون رشته جدید جستجو کنیم. ولی این کار خیلی خیلی سنگین میشه!!؟ فکرکنم البته!
 

milade

Member
راستش داشتم فکر میکردم چی میشد برنامه نویس یه چند ماه بالا نیاد!!!!!!!
D:
سلام دوست عزیز
خودم دوست دارم فعالیت کنم ولی مجید انلاین دیر لود میشه !
در مورد مشکلتون شما بد برداشت کردید .
شما باید اول هر چی رو که میخواید در بانک بزارید encode کنید و بعد از جستجو و ... decode کنید که با این حساب شما باید دوباره بانکتون رو پر کنید !
موفق باشید
 

m1pfard

Member
ممنون
خوش خبر باشین.

یه فکر دیگه چطوره یه فیلد دیگه به عنوان مثلا PlainText به جدول اضافه کنم و رشته خالص رو تو اون بریزم.
 

milade

Member
wow
شما چه طور میخواید رشته خالص رو بریزید؟
اصلا به فرض این کار رو کردید . فکر نمیکنید پدر سرور میاد جلوچشاش؟ D:
به نظر من برا اذیت نشی یه فیلد بزار به نام plaintext و متن رو در جایی که الان هست encode کن بریز توی فیلد جدید(بزار توی حلقه for )
سوت!
موفق باشی
 
آخرین ویرایش توسط مدیر:

MDP

Well-Known Member
مهدی تا حالا چیزی درباره Fulltext Serch شنیدی؟

من زیاد باهاش کار نکردم ولی مثل اینکه می تونه بین تگ های HTML فرق قائل بشه.

/

این روش هم روش ملا نطرالدین هستش :

یه استورپراسیجر تعریف می کنی و توی اون هر چیزی که پیدا میشه رو اول تست می کنی اگه تگ نیود به یه جدول میانی اضافش می کنی اگه هم بود که هیچی!

به خاطر این میگم روی سرور SQL این کار رو بکنی ، چون بعد از دفعه اول اجرا شدن خودش یه سری کار های سری می کنه که سرعت لود میره بالا.

/

چاره کار کلی :

تجربیات کم من این رو میگه که برای هر بخشی که قراره کار جست و جو انجام بشه :

1 . تگ داشته براش تعریف کنی.
2 .یه فیلدی بزار که هروقت اون متن او تو خونده شد یکی زیاد بشه.

تگ که معلومه چرا خوبه
برای اون فیلد هم فایده کار اینجاست که وقتی می خوای سرچ کنی اول اونها رو بگردی سرعت و نتایج بهتری داری.

/

میلاد بیا هلپ بده.:sad:

من توی 3 روز پشت هم 3 تا امتحان گردن کلفت دارم:cry:
 

milade

Member
دليل: هندونه هاش سنگین بود :پی
جریان چیه؟!
اعتراض نیستا .
میشه متن قبلی رو بدیدم ببینم چی نوشته بودم؟(هر چی بود باگ بود :خجالت:)
استاد این رو پیدا کردم
یه چند تا مثال پیشرفته از SQL هست که Full Text Search هم داخلشه
http://www.codeplex.com/SqlServerSamples/Release/ProjectReleases.aspx?ReleaseId=18648
اگه کسی اطلاعاتی بیشتری داره دریغ نکنه !
:kiss:
 

جدیدترین ارسال ها

بالا