PDA

View Full Version : سوال: افزایش سرعت جستجو



mafia1990
سه شنبه 01 بهمن 1392, 12:54 عصر
سلام به دوستان
من یکسری داده دارم (نزدیک به 2000 یا شادم بیشتر) میخوام اینارو در دیتابیس قرار بدم ولی نمیخوام هنگام جستجوش از جستجوی خطی استفاده کنم چون خیلی طول میکشه
میخواستم بدونم روش یا الگوریتمی هست که سرعت جستجو داده رو بالا ببره؟
مثل همین الگوریتم های btree و...
پ.ن :برنامه تحت وب نیست بلکه یک نرم افزاره

MSK
یک شنبه 06 بهمن 1392, 11:56 صبح
دوست عزیز بستگی به این داره که در چه دیتابیسی چطور داده ای رو زخیره می‌کنی. و اینکه معمولا چه نوع سرچی رو روی اون انجام میدی.
توی دیتابیس های متعارف با نیازهای متعارف راه حل عمومی اینه که روی فیلدی که معمولا سرچ رو بر مبنای اون انجام میدی یک ایندکس تعریف کنی.
اما ممکنه برحسب نیاز، این راه حل مناسب نباشه.

mafia1990
یک شنبه 06 بهمن 1392, 14:01 عصر
ببینید هدف اصلی من اینه که مثلا وقتی طرف نوشت
this is a book
برنامه رکوردهایی که هر 4 کلمه بالا درونش هست و بعد از اون 3 و بعد 2 و در آخر یکی از 4 کلمه بالا رو داره پیدا کنه و نمایش بده
نکته مهم اینه که نمیخوام ترتیب داشته باشه مثلا
book is a هم جزو رکوردایه 3تایی باشه که پیدا کرده
هنوز در مورد نوع دیتابیس فک نکردم ولی چون اپلیکیشن هست بین sql server و sqllite موندم


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

MSK
دوشنبه 07 بهمن 1392, 11:55 صبح
اصطلاح این امکانی که شما میخواید full text search هست. اگر گوگل کنید لینک‌های جالبی پیدا می‌کنید.

من نمی‌دونم sql server و sqlite در چه حد این امکان رو دارند، اما mysql و postgre sql این رو تا حد خوبی پشتیبانی می‌کنند.
در ضمن بعضی ابزارهای تخصصی برای این کار هم وجود دارند؛ مثلا این رو ببینید: http://www.elasticsearch.org