PDA

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



solook
چهارشنبه 20 دی 1385, 10:28 صبح
یا حق
با سلام به تمامی دوستان عزیز
دستورات ساده جستجو در متونی که اعراب و حرکت دارند کار نمی کند.من برای حل این مشکل یک فلید جداگانه برای جستجو ایجاد کردم و جستجو در اون فیلد انجام میشه.
اما دنبال یه راه حل میگردم که بدون نیاز به فیلد اضافی در متن های با اعراب جستجو صورت بگیرد.

MNosouhi
چهارشنبه 20 دی 1385, 11:32 صبح
دستورات ساده جستجو در متونی که اعراب و حرکت دارند کار نمی کند
حتی اگر اعراب کلمه رو بزارید باز هم کار نمی کنه؟

solook
چهارشنبه 20 دی 1385, 12:34 عصر
نه عزیز .با اعراب خوب کار میکنه

MNosouhi
چهارشنبه 20 دی 1385, 14:55 عصر
اما دنبال یه راه حل میگردم که بدون نیاز به فیلد اضافی در متن های با اعراب جستجو صورت بگیرد.

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

solook
چهارشنبه 20 دی 1385, 15:43 عصر
آیا نمیشه یه تابع یا دستوری نوشت که اعرابهای داخل متن را کالعدم فرض کنه.یعنی در هنگام جستجو با این دستو اعرابها را نادیده بگیره و اونها بعنوان کاراکتر حساب نکنه؟

MNosouhi
چهارشنبه 20 دی 1385, 17:05 عصر
آیا نمیشه یه تابع یا دستوری نوشت که اعرابهای داخل متن را کالعدم فرض کنه.یعنی در هنگام جستجو با این دستو اعرابها را نادیده بگیره و اونها بعنوان کاراکتر حساب نکنه؟
شدن رو که میشه ، اما می دونی تابعی که قرار بشه این کار رو انجام بده ، اگه حجم اطلاعات مورد جستجو زیاد باشه چند دقیقه طول میکشه تا انجام بشه؟
بیخیال این روش شو.

mzjahromi
چهارشنبه 20 دی 1385, 17:45 عصر
سرعتش اونقدرها کند نمیشه که بخوای ازش صرف نظر کنی.
به نظر من باز بهتر از اینه که با دست خودت افزونگی اطلاعات رو بالا ببری

solook
چهارشنبه 20 دی 1385, 18:08 عصر
دوستان ببینید
در بسیاری از جستجو گرها این کار انجام میشه مانند جستجوی Word که در صفحه جستجو یه
تیک داره به این نام (Match alef hamza) که با انتخاب کردن این تیک جستجو در عبارات های با اعراب به خوبی و با سرعت یکسان انجام میشه.
پس یه راه حلی هم براش میشه پیدا کرد..

mzjahromi
چهارشنبه 20 دی 1385, 18:12 عصر
البته من تا حالا عربی کار نکردم
ولی به نظرم بهترین راه نوشتن تابعی است که کلمات را از اعراب پاکسازی کند

dkhatibi
چهارشنبه 20 دی 1385, 18:26 عصر
البته من تا حالا عربی کار نکردم
ولی به نظرم بهترین راه نوشتن تابعی است که کلمات را از اعراب پاکسازی کند

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

solook
چهارشنبه 20 دی 1385, 18:33 عصر
البته من تا حالا عربی کار نکردم
ولی به نظرم بهترین راه نوشتن تابعی است که کلمات را از اعراب پاکسازی کندپاکسازی اعراب خیلی وقت گیر به نظر میرسه..شما تصور کنید دیتابیسی که بیش از 6000 رکورد داره چقدر اعراب داره
من فکر میکنم بجای پاک سازی بایدجوری عمل کنیم که خود برنامه اعرابها را نادیده بگیره.برا این کار راه حلی سراغ دارین ؟

MNosouhi
چهارشنبه 20 دی 1385, 18:40 عصر
این رو برا این گفتم که حجم اطلاعاتی که سلوک جان داره باهاش کار میکنه بالاست.

dkhatibi
چهارشنبه 20 دی 1385, 18:50 عصر
پاکسازی اعراب خیلی وقت گیر به نظر میرسه..شما تصور کنید دیتابیسی که بیش از 6000 رکورد داره چقدر اعراب داره
من فکر میکنم بجای پاک سازی بایدجوری عمل کنیم که خود برنامه اعرابها را نادیده بگیره.برا این کار راه حلی سراغ دارین ؟

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

mzjahromi
چهارشنبه 20 دی 1385, 18:58 عصر
پاکسازی اعراب خیلی وقت گیر به نظر میرسه..شما تصور کنید دیتابیسی که بیش از 6000 رکورد داره چقدر اعراب داره
من فکر میکنم بجای پاک سازی بایدجوری عمل کنیم که خود برنامه اعرابها را نادیده بگیره.برا این کار راه حلی سراغ دارین ؟

نه منظور این نیست و لازم هم نیست! اعرابها را پاک سازی کنید. فقط در جستجو همانگونه که قبلا گفتم جستجو ها را طوری شبیه سازی کنید ؛ مانند اینکه با یک کلمه ی بدون اعراب مواجه هستید.
اون شبیه سازی یعنی چی؟
اعراب رو نادیده بگیره یعنی چی؟
به فرض هم که همچین چیزی وجود داشته باشه.(نمی گم نیستا)
کامپیوتر که انسان نیست که وقتی نگاه می کنه کاری به اعرابها نداشته باشه بالا خره باید یه جائی این اعرابها جدا بشه که باز میشه همون.
منظورم اینه که شما فقط کدهای نوشته شده توسط خودتون رو نبینید این کار هر جوری و توسط هر کسی که انجام بشه نیاز به پاکسازی اعرابها و در نتیجه زمان داره ضمن اینکه پردازش 6000 رکورد فکر می کنید چقد میشه؟
نمی دونم تونستم منظورم رو درست بیان کنم یا نه؟
من سعی نمی کنم ثابت کنم اون چیزی که گفتم درسته ها(شاید هم درست نباشه)
دارم سعی میکنم تجربیات اندک خودم رو ارائه کنم

oVERfLOW
پنج شنبه 21 دی 1385, 09:38 صبح
بهترین راه اینه که بخش حذف اعراب و مقایسه رو با اسمبلی بنویسید و با این روش حتی از مقایسه‌ی معمولی دلفی هم فکر کنم سریع‌تر انجام بشه...

dkhatibi
پنج شنبه 21 دی 1385, 12:33 عصر
اگر من تصور اشتباهی دارم بگید.
هر اعراب به عنوان یک کاراکتر ذخیره می گردد که دارای کد است.موقع جستجوی یک کلمه بدون اعراب در یک متن اعراب دار با تابعی اعراب متن را حذف می کنیم و نه لزوما متن اصلی را تغییر دهیم.
بعد عمل جستجو انجام می شود.