• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
جستجو در بین داده های زیاد
#1
سلام
1- من می خواهم بین حدود 80000 رکورد livesearch انجام دهم مثل جستجوی گوگل. این کار را با ajax و با استفاده از بانک انجام دادم ولی چون رکورد ها زیادند خیلی زمان می برد و داده ها با فاصله زمانی زیاد نشان داده میشوند. برای سرعت زیاد باید چه روشی استفاده کنم؟

2- داده های بانک لغات قرآن هستند و جستجو بر اساس ورودی کاربر در textfield انجام میشود. می خواهم جستجو طوری انجام شود که اگر کاربر لغت را بدون اعراب وارد کرد جستجو را انجام دهد. یعنی جستجو بدون در نظر گرفتن اعراب لغات انجام شود. باید چه کار کنم؟
  پاسخ
تشکر شده توسط :
#2
نقل قول:1- من می خواهم بین حدود 80000 رکورد livesearch انجام دهم مثل جستجوی گوگل. این کار را با ajax و با استفاده از بانک انجام دادم ولی چون رکورد ها زیادند خیلی زمان می برد و داده ها با فاصله زمانی زیاد نشان داده میشوند. برای سرعت زیاد باید چه روشی استفاده کنم؟
80000 هزار رکورد برای بانک اطلاعات عدد بزرگی نیست مگر اینکه شما در متن جستجو کنید که در اینصورت بهتره از روشهای fulltext search استفاده کنید:
http://devzone.zend.com/article/1304
  پاسخ
تشکر شده توسط : mkmk molana
#3


میدونید گوگل با چه روشی جستجو انجام میده؟
  پاسخ
تشکر شده توسط :
#4
ایندکس گزاری کردید؟
  پاسخ
تشکر شده توسط : mkmk
#5
(۱۳۸۹ اسفند ۱۳, ۰۷:۲۷ ب.ظ)zoghal نوشته: ایندکس گزاری کردید؟

ممنون. ایندکس گذاری کردم سرعتش بهتر شد.
  پاسخ
تشکر شده توسط :
#6
سلام

سوالی که اینجا پرسیده اید واضح تر از آن یکی سوالتان است و مفهوم و خواسته تان را خیلی بهتر می رساند.

بنظر من بهترین راه استفاده از همان تابعی است که در آن یکی پستتان لینکش را برایتان گذاشته ام. با استفاده از عبارات منطقی احتمالا مشکلتان حل می شود ولی کار آسانی هم نباید باشد و کمی زمان می برد تا بتوانید به نتیجه دلخواهتان برسید اما بنظر شدنی است.

یک راه دیگر که به ذهنم می رسد این است که در جدولتان یک فیلد مجزا ایجاد کنید و تمام کلمات را بدون اعراب در آن قرار دهید و هنگام جستجو هم فیلدی که حاوی کلمات با اعراب و هم فیلدی که حاوی کلمات بدون اعراب است را جستجو کنید. البته در این روش حجم بانکتان با توجه به تعداد رکوردی که دارید مقداری زیاد خواهد شد که باید به آن نیز توجه کنید تا از لحاظ فضا و مسائل دیگر دچار مشکلتان نکند.

احتمالا در اینباره توابعی نیز نوشته شده باشد . فکر می کنم اگر بزرگانی همچون وحید سهرابلو به این پست شما سر بزنند حتما راه حل هایی بهتر به شما خواهند داد.
ایران سرزمین من است ، سرزمین پدران من است.
به خاکش سوگند ، برایش خون هم خواهم داد.
  پاسخ
تشکر شده توسط : mkmk
#7
http://www.phpclasses.org/package/2875-P...rules.html
این کلاس می تونه قسمت where رو واستون در بیاره
اما خب داره عبارات باقاعده استفاده می کنه و این عبارات با قاعده رو باید خود mysql پردازش کنه. یعنی این وسط index کشک Big Grin ( کلا هر وقتی که یه تابعی داخل قسمت where میاد index بی معنی میشه و mysql مجبور هست اول تابع رو بر روی همه row ها اعمال کنه)
پس بهترین راه استفاده از همون فیلد اضافی بدون اعراب هست
  پاسخ
تشکر شده توسط : mkmk


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان