PDA

View Full Version : جستجو در بین 10000000000 خط نوشته



M * M * A
دوشنبه 15 اسفند 1390, 20:58 عصر
با سلام خدمت دوستان عزیز

من 100000000000 خط نوشته دارم .و با دستور

SELECT @CHARINDEX_P=CHARINDEX(@SEARCHFOR_P,@STRING,@CHARI NDEX_P+1)
به دنبال یک سری کلمات میگردم . ولی سرعت خیلی پایین هست

چه راه حلی رو به من پیشنهاد میکنین ؟ که سرعت 100 برابر بشه ؟

plz plz plz plz help me

nedata
سه شنبه 16 اسفند 1390, 00:43 صبح
ازدستور like استفاده كنيد

M * M * A
سه شنبه 16 اسفند 1390, 10:52 صبح
با سلام خدمت دوست عزیز
من 1 رکورد بیشتر ندارم. و توی اون 100000000 خط نوشته هست
حالا میخوام یک کلمه رو توش بگردم . و هرجایی که پیدا کرد رو 20 حرف قبل و بعدشو بهم بده

یوسف زالی
سه شنبه 16 اسفند 1390, 12:19 عصر
سلام.
سرعت پردازش در UI در این خصوص خیلی بیشتر از اس کیو ال هست.
خود سیستم عامل برای این کار توابع بهینه ای داره.
البته مشروط به اینکه بار شبکه رو پذیرا باشید. اگر روی نت هستید که کلا این روش رو استفاده نکنید.
در خصوص خود کار کمی توضیح بدید شاید روشهای جایگزینی وجود داشته باشه.

M * M * A
سه شنبه 16 اسفند 1390, 13:35 عصر
سلام خدمت مدیر بخش عزیز

من یک کتاب خیلی بزرگ دارم که توی یک رکورد ذخیره شده. بیش از 1000000 خط نوشته داره


حالا من به دنبال یک کلمه توی این کتاب میگردم . باید سیستم تمام جاهایی که از این کلمه استفاده شده رو بیاره (.البته 20 حرف قبل و بعدش رو )
حالا من باید چه کار کنم ؟

یوسف زالی
سه شنبه 16 اسفند 1390, 13:41 عصر
سلام به دوست گرامی.
راههایی هست برای سریع شدن که یکی از اونها استفاده از full text search هست.
همین مورد رو در همین تالار دوستانمون توضیح دادند.
مطالعه کنید اگر مشکلی بود بفرمایید.

M * M * A
سه شنبه 16 اسفند 1390, 13:52 عصر
این روش و استفاده کردم
ولی جاهایی که این کلمه استفاده میشه رو نمیده .خود رکوردو بر می گردونه.
من کلا 1 رکورد بیشتر ندارم

مثال :
ABCDECDFGHSKFCNMKHHCFG
تگه دنبال C بگردم باید اینجوری جواب بده : اگه جوری تنظیم شده باشه که 1 حرف قبل و بعدشو بیاره
1:BCD
2:ECD
3:FCN
4:HCF

یوسف زالی
سه شنبه 16 اسفند 1390, 15:36 عصر
پس به نظر من بهتره که در UI این کار رو انجام بدید.
فقط زمان انتقال به UI یه کم بالاست که در مقایسه با زمان شما کمه.
مشکلی در رابطه با بالا رفتن ترافیک ندارید؟

یک روش هم استفاده از CLR هست.
امتحانش کردید؟

M * M * A
سه شنبه 16 اسفند 1390, 19:15 عصر
نه
امتحان نکردم

میشه درباره اینها توضیح بدین؟

baktash.n81@gmail.com
شنبه 20 اسفند 1390, 09:36 صبح
سلام

من اگه می خواستم اینکارو بکنم دوتا جدول می ساختم که هر کدوم دوتا فیلد دارن اولی ID و کلمه جدول دم هم کد کلمه و Index ...
بعد یه کد می نوشتم که تمام کلمات متن رو در بیاره بریزه تو جدول اول ... بعد هم دونه دونه کلمات رو از جدول اول می خوندم و جاشون رو تو متن پیدا می کردم و تو جدول دوم قرار می دادم (البته این دوتا کار رو می شه هم زمان انجام داد)
بعد وقتی یه کاربر جستجو می کرد من به راحتی Index های اون کلمه رو پیدا می کردم بعد می فتم سراق متن ....

البته باید دید اصلا ارزش این هم دردسر رو داره .... ؟!؟

M * M * A
یک شنبه 21 اسفند 1390, 21:01 عصر
با سلام خدمت دوست عزیز
آره منم این کارو کردم
خیلی سرعت بالا رفته

4 روز دیر جواب دادی
:تشویق:
:قلب:

mahan.2002
یک شنبه 21 اسفند 1390, 23:29 عصر
سلام

من اگه می خواستم اینکارو بکنم دوتا جدول می ساختم که هر کدوم دوتا فیلد دارن اولی ID و کلمه جدول دم هم کد کلمه و Index ...
بعد یه کد می نوشتم که تمام کلمات متن رو در بیاره بریزه تو جدول اول ... بعد هم دونه دونه کلمات رو از جدول اول می خوندم و جاشون رو تو متن پیدا می کردم و تو جدول دوم قرار می دادم (البته این دوتا کار رو می شه هم زمان انجام داد)
بعد وقتی یه کاربر جستجو می کرد من به راحتی Index های اون کلمه رو پیدا می کردم بعد می فتم سراق متن ....

البته باید دید اصلا ارزش این هم دردسر رو داره .... ؟!؟

فکر جالبی بود.