PDA

View Full Version : گفتگو: راه حلی برای جستجوی سریع



Hossis
یک شنبه 10 مهر 1390, 21:22 عصر
جستجویی که مرسوم هست در بانک اطلاعاتی ،‌ در مورد بانک های با حجم بالا و با رکوردهای زیاد (مثلا 15000 رکورد با متون طولانی) خیلی کند انجام می گیرد به این کد دقت کنید
select [titr] From Table Where matn like'%مداد%' And matm like Not '%کتاب%' ...
این دستور را در یک بانک اکسس با پانزده هزار رکورد به کار می گیریم که متویات فیلد متن هر رکورد،‌ طولانی و در حد یک صفحه وب است (فیلد با متن طولانی)
با این وضعیت سیستم جستجو مختل شده و سرچ به کندی انجام می گیرد
می خواستم بدونم فن آوری جدیدتری برای جستجوی سریع وجود ندارد؟
در حالی که من دیدم برخی برنامه ها در بین 1.5 گیگ اطلاعات ،‌در یک چشم به هم زدن جستجو می کنند.

Hossis
یک شنبه 10 مهر 1390, 21:25 عصر
البته لازم بود تذکر بدم که من از روش OLeDb.Connection به بانک کانکت می شم

Mani_rf
یک شنبه 10 مهر 1390, 22:29 عصر
سلام. نمیدونم که این روش چقدر جواب میده اما چون اطلاعات تو رم بررسی میشه امیدوارم سرعتش بالاتر باشه. با یک دیتا آداپتور یک دیتا تیبل را با همه رکورد ها پر کن. بعد از این طریق فیلترینگ را انجام بده :

DataTable.DefaultView.RowFilter = "matn like'%مداد%' And matm like Not '%کتاب%'"

Hossis
یک شنبه 10 مهر 1390, 22:36 عصر
امیدوارم جواب بده ولی فکر نمی کنید با این روش،‌ حافظه پر بشه؟
البته فکر کنم یک بار که برنامه سرچ رو انجام بده، مجددا لازم نیست همه اطلاعات به رم فراخوانده بشه؟

oliya24
یک شنبه 10 مهر 1390, 23:56 عصر
خوب ببین دوست عزیزم یه روشی هست
البته م کد نویسی تو ویبی ش رو بلد نیستم ولی تو اس کیو ال سرور از نسخ 2005 به بالا روشی ابداع گردید که به نام full text search مرسوم است خود بنده 2 یا چند لینک در این مورد همین چند روز پیش تو تالار tsq همین سایت قرار دارم این روش برای کاری که شما نیاز دارید جواب میده
و برای رکوردهای بالاتر از 1 میلیون هست که در این مورد عملگر like جوابگو نیست و ممکنه که جستجو 1 میلیون رکورد با این عملگر به چند دقیقه برسه اما با این روش که عرض کردم این چند دقیقه به چند ثانیه میرسه
موفق باشید

M.KH-SH
دوشنبه 11 مهر 1390, 00:42 صبح
البته لازم بود تذکر بدم که من از روش OLeDb.Connection به بانک کانکت می شم چرا برای این کار از sql server استفاده نکردی؟



بنده 2 یا چند لینک در این مورد همین چند روز پیش تو تالار tsq همین سایت قرار دارم

دوست عزیز امکان داره لینک تاپیک رو بزارین.
مرسی .

oliya24
دوشنبه 11 مهر 1390, 01:00 صبح
بله دوست من این هم لینک امیدوارم مشکلی نداشته باشه
http://barnamenevis.org/showthread.php?306507-سلام-دوستان-اینم-اموزش-خوب-برای-full-text-search-حتما-بخونید

biotechsoft
دوشنبه 11 مهر 1390, 19:34 عصر
تکنولوژی بانک قدیمیه!!! اکسس جوابگوی سرعت خیلی بالا نیست دوست عزیز
تنها راهی که داری استفاده از sql و یا اینکه جستجوی داینامیک نداشته باشی!
من با sql تعداد 40000 رکورد رو به راحتی دارم تو برنامه هام جستجو میکنم اما بانک اکسس نهایتا 5000 رکورد بدون افت سرعت

به هر حال فیلترینگ بین متن یکم وقت میگیره

alimanam
دوشنبه 11 مهر 1390, 20:18 عصر
با سلام

به این صورت عمل کنید مشکلتون حل میشه . 15000 که چیزی نیست بیشتر از این هم جواب میده .

SELECT TOP 10 your_Field_Names_Here FROM Table_Name

موفق باشید ./

M.KH-SH
دوشنبه 11 مهر 1390, 21:46 عصر
میشه یکم در این باره توضیح بدین
من تا الان از top 10 استفاده نکردم و نمیدونم که کارش چیه و بر چه اساس ds رو پر می کنه

oliya24
دوشنبه 11 مهر 1390, 22:32 عصر
دوست من اگر میخوایی تو اس کیو ال پیشرفت کنی بیا تو همین سایت قسمت tsql
من این موضوع رو برات میشرحم تا مشکلت حل بشه
این عبارت برای مشخص کردن تعداد رکوردهایی که لازم است اطلاعات رو برگرداند مورد استفاده قرار میگیرد
البته من فکر نمیکنم که این عبارت در اکسس پشتیبانی بشه در اس کیو ال و مای اس کیوال و اوراکل رو میدونم میشه ولی اکسس رو. نمیدونم
اینطوری استفاده میشه
select top 2 * from tbl_name
در این کد ما فقط دو رکورد رو میتونیم از جدول بیرون بکشیم
در این عبارت میشه رکوردها رو درصد بندی هم کرد
به این شکل
select top 20 percent * from tbl_name
در این کد ما فقط بیست درصد از رکوردها رو میتونیم ببینیم
دوست من من در تالار tsql همین سایت پستی زدم با عنوان سایتهای خوب یا یه چیزی مثل این نگاه کن من لینک اموزشی زیاد توش گذاشتم
یکیش هم که فارسیه اینه
www.webfocus.ir (http://www.webfocus.ir)
موفق باشی دوست من

Hossis
سه شنبه 12 مهر 1390, 20:44 عصر
دراین روش تنها تعدادی از رکوردها (به شماره یا درصد) جستجو می شوند در حالی که به طور معمول می خواهیم صد درصد رکوردها را جستجو کنیم

oliya24
چهارشنبه 13 مهر 1390, 00:47 صبح
پس یا like یا ایندکس گذاری full text search
شما با like میتونید این کار رو انجام دهید اما اگر فکر میکنید که رکورده ممکنه به مرور زمان زیادت بشن تا حد بالای 1 میلیون از روش ایندکس گذاری استفاده کنید
موفق باشید