PDA

View Full Version : سوال: جستجو در بانک اطلاعاتی دیکشنری



mehdi_7070
شنبه 22 تیر 1387, 19:58 عصر
با عرض سلام
فرض کنید یک بانک اطلاعاتی داریم که حاوی یک سری لغت و معنی اون‌هاست .
حالا برای جستجو یک راه حل این هست که برنامه بیاد از اول تا آخر بانک را بگرده . ولی این روش خوب نیست .
حالا چه طوری میشه کاری کرد که مثل خودمون که توی دیکشنری اول میریم سراغ حرف اول و الی‌آخر جستجو هم به همین شکل باشه . مثلا اگر قرار هست واژه Street پیدا کنه نیاد از اول تا آخر بگرده و فقط واژه‌هایی را بگرده که حرف اول اون S هست .
بانک اطلاعاتی هم اکسس هست .
با تشکر

Mbt925
یک شنبه 23 تیر 1387, 12:48 عصر
بهترین و سریع ترین روش استفاده از دستورات SQL است.
اگه در این مورد اطلاعی ندارید، توی سایت آموزش های زیادی وجود داره.

mpmsoft
یک شنبه 23 تیر 1387, 14:18 عصر
می تونی از این کد SQL استفاده کنی


Select FWord WHERE EWord Like '%Hello%'

mehdi_7070
یک شنبه 23 تیر 1387, 14:32 عصر
بهترین و سریع ترین روش استفاده از دستورات SQL است.
اگه در این مورد اطلاعی ندارید، توی سایت آموزش های زیادی وجود داره.
در مورد اينكه كدوم يك از دستورات SQL به درد من ميخوره ، اطلاعي ندارم . توي هيچ كدوم هم توضيح نداده كه كدوم دستور اين كاري كه من ميخوام را انجام ميده . ميشه بيشتر راهنمايي كنيد؟


می تونی از این کد SQL استفاده کنی


Select FWord WHERE EWord Like '%Hello%'
اين كد هم كه مياد از اول تا آخر مي‌گرده :گریه:

r0ot$harp
یک شنبه 23 تیر 1387, 14:51 عصر
در مورد اينكه كدوم يك از دستورات SQL به درد من ميخوره ، اطلاعي ندارم . توي هيچ كدوم هم توضيح نداده كه كدوم دستور اين كاري كه من ميخوام را انجام ميده . ميشه بيشتر راهنمايي كنيد؟


اين كد هم كه مياد از اول تا آخر مي‌گرده :گریه:

دوست عزیز من دیکشنری نوشتم با حدود اگر اشتباه نکنم 56 هزار لغت و بسیار سریع بود از همین روش استفاده کردم . فکر نمی کنم این روش مشکل داشته باشه !! عیب اینکه از اول تا آخر بخواد بگرده چیه ؟


باتشکر احسان

mehdi_7070
یک شنبه 23 تیر 1387, 16:36 عصر
دوست عزیز من دیکشنری نوشتم با حدود اگر اشتباه نکنم 56 هزار لغت و بسیار سریع بود از همین روش استفاده کردم . فکر نمی کنم این روش مشکل داشته باشه !! عیب اینکه از اول تا آخر بخواد بگرده چیه ؟


باتشکر احسان

يعني اين ديكشنري شما از اول تا آخر ديتابيس را مي‌گرده؟
چه نيازي هست انقدر عمليات جستجو طولاني باشه؟
به نظر شما اگر به روش معمولي كه دنبال يك لغت توي ديكشنري هستيم ، به دنبال اون لغت بگرده ، بهتر نيست؟ توي محدوده‌ي كمتري اين كار انجام نميشه؟

shaghaghi
سه شنبه 25 تیر 1387, 08:27 صبح
سلام
برای اینکه سرعت جستجو را به حداکثر برسانید، آنرا به مراحل کوچکتر تقسیم کنید، بدین نحو که در رخداد Change از TextBox ی که لغت را از کاربر دریافت می کند، به ازای تایپ هر حرف از لغت، عمل جستجو را مطابق txtEWord.text انجام دهید
(اگر مایل بودید با استفاده از یک AutoComplete ListBoxشامل تمام لغات قابل جستجو است جلوه بهتری به برنامه بدهید http://barnamenevis.org/forum/showpost.php?p=332970&postcount=613)

mpmsoft
سه شنبه 25 تیر 1387, 09:00 صبح
دوست عزیز کامپیوتر که با یک فشگن زدن که کارو انجام نمی ده

زمانی که شما از %% Like و یا هر دستوره دیگه ای استفاده می کنید SQL از اولین رکورد تا آخرین رکورد می ره و لغتهایی که مشابه با این لغت باشه برمی گردونه


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

mehdi_7070
سه شنبه 25 تیر 1387, 09:47 صبح
سلام
برای اینکه سرعت جستجو را به حداکثر برسانید، آنرا به مراحل کوچکتر تقسیم کنید، بدین نحو که در رخداد Change از TextBox ی که لغت را از کاربر دریافت می کند، به ازای تایپ هر حرف از لغت، عمل جستجو را مطابق txtEWord.text انجام دهید
(اگر مایل بودید با استفاده از یک AutoComplete ListBoxشامل تمام لغات قابل جستجو است جلوه بهتری به برنامه بدهید http://barnamenevis.org/forum/showpost.php?p=332970&postcount=613)

خيلي ممنون از راهنمايي شما :قلب:



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

زمانی که شما از %% Like و یا هر دستوره دیگه ای استفاده می کنید SQL از اولین رکورد تا آخرین رکورد می ره و لغتهایی که مشابه با این لغت باشه برمی گردونه


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

ببينيد ... اصلا شما فكر كن بحث سرعت عمل نيست :چشمک:
بحث اين هست كه چه طوري ميشه اين طرح را پياده سازي كرد؟ همين!

من يه راه به ذهنم رسيد ، فقط يك قسمتش را نمي‌دونم .
يك رديف توي جدول اضافه مي‌كنيم و توي اون حرف اول هر كلمه را مي‌نويسيم .
حالا فرض كن ما كلمه book را به برنامه بدهيم . برنامه بياد اول توي رديفي كه حرف‌هاي اول هست و هر چي b هست پيدا كنه ، بعد بياد از توي اين‌ها book را پيدا كنه .
دقت كنيد كه منظورم جستجوي همزمان اين دو مورد با AND نيست . اول هر چي با b شروع ميشه پيدا كنه و بعد از بين اينا book را پيدا كنه .

Mbt925
سه شنبه 25 تیر 1387, 21:23 عصر
طراحی پایگاه های داده ای، مثل فایل نیست که همه ی رکوردها بدون هیچ ترتیب خاصی پشت سرهم قرار بگیرن و ما مجبور باشیم برای پیدا کردن یک رکورد، همه ی رکوردها رو جستجو کنیم.
پایگاه های داده ای با اصول خاصی طراحی میشن که درج،حذف و ویرایش رکوردها رو با بالاترین سرعت انجام میدن.

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

همه ی مدل های جستجویی که شما قصد انجامش رو دارید با دستورات SQL امکان پذیره.

mehdi_7070
چهارشنبه 26 تیر 1387, 10:51 صبح
طراحی پایگاه های داده ای، مثل فایل نیست که همه ی رکوردها بدون هیچ ترتیب خاصی پشت سرهم قرار بگیرن و ما مجبور باشیم برای پیدا کردن یک رکورد، همه ی رکوردها رو جستجو کنیم.
پایگاه های داده ای با اصول خاصی طراحی میشن که درج،حذف و ویرایش رکوردها رو با بالاترین سرعت انجام میدن.

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

همه ی مدل های جستجویی که شما قصد انجامش رو دارید با دستورات SQL امکان پذیره.

خیلی ممنون از راهنمایی‌های شما ...

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

با تشکر

Mbt925
چهارشنبه 26 تیر 1387, 12:00 عصر
این موضوع یه مبحث تخصصی و گسترده است.
برای این موضوع می تونید به کتاب های "ذخیره و بازیابی اطلاعات" که در بازار موجوده مراجعه کنید.

mehdi_7070
جمعه 28 تیر 1387, 17:03 عصر
می تونی از این کد SQL استفاده کنی


Select FWord WHERE EWord Like '%Hello%'

سلام
ميشه يك نمونه از اين كد برام بذاريد .
با تشكر