PDA

View Full Version : جستجوی لغات عربی با اعراب با ورودی بدون اعراب توسط کاربر



m_karimi
جمعه 13 اسفند 1389, 10:31 صبح
سلام
من می خواهم بین رکورد های جدول جستجو انجام دهم. داده های بانک لغات عربی و دارای اعراب هستند و جستجو بر اساس ورودی کاربر در textfield انجام میشود. می خواهم جستجو طوری انجام شود که اگر کاربر لغت را بدون اعراب وارد کرد جستجو را انجام دهد. یعنی جستجو بدون در نظر گرفتن اعراب لغات انجام شود. باید چه کار کنم؟

binyaft
جمعه 13 اسفند 1389, 12:17 عصر
هر اعراب خودش یک کاراکتر هست ، فیلترشون کن!

m_karimi
جمعه 13 اسفند 1389, 19:15 عصر
هر اعراب خودش یک کاراکتر هست ، فیلترشون کن!

با چه روشی میتونم فیلتر کنم؟

فرض کنید این کویری من است:
"select * from table where field like '".$_POST['textfield']."%'";
آیا تابعی در mysql هست که فیلد field و یک سری کاراکتر خاص اعراب را به عنوان پارامتر بگیرد و آن کاراکتر های خاص را نادیده بگیرد و با فیلد بدون اعراب مقایسه کند؟


"select * from table where function(field) like '".$_POST['textfield']."%'";

amir001
شنبه 14 اسفند 1389, 22:50 عصر
اگر حجم اطلاعاتت سنگین نیست میتونی دو فیلد در کنار هم ایجاد کنی و در یکی جملات عربی با اعراب را ذخیره کنی و در دیگری همون جملات را بدون اعراب ذخیره کنی، حالا روی جملات با اعراب بگرد و اگر پیدا کردی فیلد اعراب دارش را نمایش بده.

فکر میکنم mysql قابلیت اضافه کردن تابع را داره . خودت میتونی یک تابع بنویسی که اول اعراب ها را حذف کنه بعد با جمله ورودی مقایسه کنه. یه چیزی مثل تابع convert خود mysql....

m_karimi
شنبه 14 اسفند 1389, 23:07 عصر
اگر حجم اطلاعاتت سنگین نیست میتونی دو فیلد در کنار هم ایجاد کنی و در یکی جملات عربی با اعراب را ذخیره کنی و در دیگری همون جملات را بدون اعراب ذخیره کنی، حالا روی جملات با اعراب بگرد و اگر پیدا کردی فیلد اعراب دارش را نمایش بده.

فکر میکنم mysql قابلیت اضافه کردن تابع را داره . خودت میتونی یک تابع بنویسی که اول اعراب ها را حذف کنه بعد با جمله ورودی مقایسه کنه. یه چیزی مثل تابع convert خود mysql....

حجم دیتابیس زیاد است و امکان اضافه کردن لغات بدون اعراب را ندارم.
از تابع replace در مای اسکیول می تونم استفاده کنم. یک کتابخانه هم هست که توابع Regular Expressions را دارد ولی هنوز نتونستم این کتابخانه را در مای اسکیول نصب و اضافه کنم. لطفا این تاپیک من را اگر می تونید جواب بدید: http://barnamenevis.org/showthread.php?277426-استفاده-از-کتابخانه-مای-اسکیول

amir001
شنبه 14 اسفند 1389, 23:33 عصر
بحساب کن اگر مای اسکیو ال بخواد هر بار که یک جست جو را اجرا کنه تمام متن های عربی شما را پردازش کنه و اعراب را برداره و جست جو کنه چقدر پردازش میشه؟
بهتر نیست فضا را فدای زمان کنید؟؟

مگر اینکه راه واقعا سریعی پیدا کنی.

m_karimi
شنبه 14 اسفند 1389, 23:48 عصر
بحساب کن اگر مای اسکیو ال بخواد هر بار که یک جست جو را اجرا کنه تمام متن های عربی شما را پردازش کنه و اعراب را برداره و جست جو کنه چقدر پردازش میشه؟
بهتر نیست فضا را فدای زمان کنید؟؟

مگر اینکه راه واقعا سریعی پیدا کنی.

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

amir001
یک شنبه 15 اسفند 1389, 00:22 صبح
اگر بخواهی جست جو را خودت انجام بدی میتونی از تابع str_replace استفاده کنی و اعراب را جست جو کنی و با رشته تهی جایگزین کنی.
اما باز هم اگر بخواهی برای هر جستجو تمام رکوردهات را بگیری و اعراب را ازش حذف کنی و متن را درونش جست جو کنی اصلا بهینه نیست و زمان زیادی ازت میگیره.(حساب کن، فرد اول جست جو کرد شما تمام رگوردها را گرفتی و اعراب را حذف کردی و متن کاربر را پیدا کردی، حالا نفر دوم هم جست جو کرد، دوباره باید تمام اعراب را حذف کنی و ....)

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

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

اگر تصمیم بر انجام چنین کاری گرفتی و مشکلی داشتی بگو تا کمکت کنم.
اگر بانک اطلاعات از قرآن داشتی به من هم بده خیلی خیلی لازم دارم :چشمک:

m_karimi
یک شنبه 15 اسفند 1389, 14:58 عصر
دانلود دیتابیس قرآن.
از سایت زیر می توانید دیتابیس متن قرآن و دیتابیسهای ترجمه فارسی قرآن و ترجمه بسیاری از زبانهای دیگر را در یافت نمایید. برای دانلود در منوی download بروید.
http://tanzil.info

از سایت زیر هم برای دیتا بیس لغت های قرآن می توانید استفاده نمایید.
http://corpus.quran.com/download

از سایت زیر هم می توانید فایل صوتی هر آیه از قرآن را به صورت جداگانه دانلود نمایید:
http://www.versebyversequran.com/site/download
در قسمت Ayat MP3 Recitations می توانید فایلهای صوتی قاریان مختلف را دانلود کنید.