بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

موردی عجیب در نمایش نتیجه ی جستجو در دیتابیس (پروژه ی dictionary) - (حل شد)

مدیریت گفتگو
mhpakdel 10 سال پیش
آخرین تغییر: 10 سال پیش

درود بر همگی دوستان
موردی که برای من اتفاقی پیش اومد و خواستم در جریان بذارم. در بخش پروژه دیکشنری خواستم از کدها برای بخشی از سایتی که در حال طراحی اون هستم استفاده کنم و اونو توسعه بدم و یه بخش جستجو راه اندازی کنم. اما با مشکلی عجیب برخورد کردم. دستور SQLی که در پروژه ی دیکشنری استفاده شده در فایل feed که به صورت Ajax از دیتابیس خونده میشه، کلماتی که با حروف انگلیسی E , H , L و O شروع میشن رو در نتایج جستجو نمایش نمیده و حتی کلماتی که وسط اونها این حروف وجود داره هم نمایش نمیده!! میتونید امتحان کنید.
قبلا که آموزش ها رو میدیدم به این مشکل برنخوردم چون یا در دیتابیس کلماتی که شروعش با این حروف باشه نبود و یا این موارد اصلا تست نشد!

اما اگه بعد از این حروف حرف دیگه ای رو برای جستجو وارد کنیم اون موقع نتایج مرتبط نمایش داده میشه.
مثال: در دیتابیس کلمه ی OUTPUT وجود داره. اما با وارد کردن حرف O هیچ نتیجه ای نمایش داده نمیشه ولی بعد که حرف U رو هم وارد کردیم (یعنی در باکس جستجو OU وارد شده باشه) در نتیجه، کلمه ی OUTPUT نمایش داده میشه. یعنی برای نمایش OUTPUT باید OU رو تایپ کنیم و با تایپ تنها حرف O نتیجه ای در بر نداره!!

این مورد تنها برای حروفی که ذکر کردم وجود داره.
دوستان من هیچ فیلتری رو از سمت دیتابیس MySQL یا کد دستور SQL انجام ندادم و حتی دقیقا پروژه دیکشنری استاد رو دوباره لود و امتحان کردم. مطمئنم این یک مشکل فنی در ساختار کدها یا دیتابیس هست یا اینکه واقعا من موردی رو جا انداختم که خوشحال میشم دوستان و اساتید در این مورد راهنمایی کنن.

نظرات

mhpakdel 10 سال پیش
در پست چهارم علت رو توضیح دادم. هرچند فقط پیداش کردم ولی دلیلش رو نفهمیدم

پاسخ‌ها 4

reza piry ghadim 10 سال پیش

برای سرچ استاد در کوری های خود از LIKE  استفاده کرده بود .

من خودم وقت نکردم تست کنم ولی این ساختار کد SQL رو هم امتحان کنید .

 
SELECT * FROM 'mytable' WHERE INSTR('mycol', 'abc') > 0

 

نظرات

mhpakdel 10 سال پیش
نه این دستور هم جواب نداد. کلا خطا میگیره از این دستور. عیناً همین دستور شما رو با تغییر جدول و ستون نوشتم. اما واقعا موندم چرا دستوری که به وسیله LIKE نوشته شده باگ داره. دوستان اگه براشون مقدور هست این مورد رو چک کنن. خیلی عجیبه. ممنونم
mhpakdel 10 سال پیش
دلیلش رو بالاخره متوجه شدم. پست سوم رو ببینید و نظرتون رو بگید. ممنونم
WS 10 سال پیش

دوست عزیز فکر نکنم مشکلی داشته باشه ، من کد ها رو چک کردم مگراینکه منظور چیز دیگه ای باشه. تفاوتی در حروف کوچک و بزرگ نداره ،شما دقیقا کد های پروژه را استفاده کردید یا اینکه تغییراتی دادید؟

نظرات

mhpakdel 10 سال پیش
ممنونم از پاسختون. دلیل رو بالاخره پیدا کردم. نه مشکل از کدهای من بود. نه مشکل از syntax. دلیل رو در پست بعدی مفصل گفتم. امتحانش کنید.
mhpakdel 10 سال پیش

بالاخره به هر بدبختی ای بود علتش رو پیدا کردم. هیچ جا مطلبی راجع بهش گفته نشده بود یا من نتونستم پیدا کنم
علت خیلی عجیبه. اول این اسکرین شات رو ببینید:

شما هر عبارتی رو در رکورد اول دیتابیس بنویسید از حوزه ی جستجو خارج میشه! شاید بگید دارم اشتباه میکنم اما امتحان کنید. حتما تا به حال براتون اتفاق نیوفتاده. دلیل این که برای من حروف H , E , L , O در نتیجه جستجو نمیومد همین بود که اولین رکورد دیتابیسم کلمه ی hello بود و این حروف رو از حوزه ی جستجو خارج می کرد.

من برای اطمینان کلمه ی رکورد اولی رو عوض کردم. مثلا گذاشتم roya و با این کار حروف R , O , Y , A در نتیجه ی جستجو دیده نمی شدند!
جالب اینجاست که برای hello اگه عبارات زیر رو جستجو کنید هیچی پیدا نمیکنه:
h , he , hel , hell , e , el , ell , ello , l , ll , llo , lo و خود hello !!

با این تفاسیر دیگه نباید رکورد اول دیتابیس رو یکی از اطلاعاتمون قرار بدیم و باید اونو خالی نگه داربم یا یک کاراکتر بی استفاده در نظر بگیریم.

آیا این یک ارور منطقی هست؟ دلیلش چیه؟
ممنون میشم دوستانی که اطلاع دارند در موردش ما رو راهنمایی کنن اگه ممکنه و با تشکر از دوستانی که این مورد رو چک کردن و نظرشون رو گفتند.

نظرات

WS 10 سال پیش

سلام برادر ، به نظر منطقی نمیاد.دلیلی نداره اولی حذف بشه.

من چک کردم مشکلی نداشت،فقط شما اگه داری اطلاعات رو در یک ارایه می گیری و اگه داری از for  استفاده میکنی،ارایه از صفر شروع میشه.

نظرات

mhpakdel 10 سال پیش
من کل پروژه خودم رو پاک کردم. سورس پروژه موجود در سایت که کدهای خود استاد آقاجانی هست رو لود کردم. باز هم همین مشکل وجود داره. نمی دونم شما چه کدی نوشتین. اما با کدهای استاد و این آموزش این مشکل برقراره. اگه منظورتون اینه که کد سورس سایت هم ایراد داره، ممنون میشم بگین چیکار کردین که کار میکنه
WS 10 سال پیش
دوست عزیز من همون کد های پروژه دیکشنری رو بدون تغییر چک کردم و کد های اقای اقاجانی مشکلی نداشت. مطمعنا مشکل از چیز دیگری هست. به نظرم دیتابیس رو ترانک کن و بعدش دوباره چک کن ،اگر کد خاصی رو نوشتی بزار چک کنیم و گرنه کد های پروژه دیکشنری که در سایت هست بدون هیچ تغییری جواب میده.
mhpakdel 10 سال پیش
با ترانک دیتابیس مشکل حل شد. ممنون از اینکه توجه داشتین. ولی متاسفانه معلوم نشد چرا دیتابیس قبلی و همچنین دیتابیس آنلاین که از local من import شده بود، مشکل داشت. احتمالا یه باگی هست موقع ساخت دیتابیس که همیشه هم رخ نمیده

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .