مشکل در جستجو در دیتابیس آیات قرآن
سلام
من برای اپلیکیشن قرآنی یک قسمت سرچ در آیات در نظر گرفتم .ولی به یک مشکلی خوردم و اون اینه که وقتی یک کلمه رو سرچ میکنم خروجی درستی بهم نمیده.بعضی اوقات خروجی میده و بعضی اوقات نه ، در حالیکه اون کلمه واقعا در آیات وجود داره.مثلا کلمه یوسف در آیات وجود داره ولی خروجی صفر بهم میده.چندین بار هم دیباگ کردم ولی نفهمیدم مشکل از کجاست.دوستان کسی میدونه مشکل چیه؟اینم کد مربوط به کوئری دیتابیس هست:
public List<Verse> searchInVerse(String word){
List<Verse> resultInSearch = new ArrayList<>();
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT * FROM Ayeh WHERE text_clean LIKE '%"+word+"%'",null);
if (cursor.moveToFirst()){
do {
Verse verse = new Verse();
verse.setIndex(cursor.getInt(0));
verse.setJoz(cursor.getInt(1));
verse.setPageNo(cursor.getInt(2));
verse.setSura(cursor.getInt(3));
verse.setAya(cursor.getInt(4));
verse.setText(cursor.getString(5));
verse.setTextClean(cursor.getString(6));
verse.setSurahName(getSurahById(verse.getSura()).getBerab());
resultInSearch.add(verse);
}
while (cursor.moveToNext());
}
cursor.close();
return resultInSearch;
}
بنظرم این مشکل از اینجا آب میخوره که شما به حروف فارسی و عربی توجه نکرده اید.
میدونید که کاربری که کیبوردش فارسی هست میاد و
کلمه ی یوسف رو به اینصورت مینویسه: ی و س ف
اما کاربر عربی میاد و اینطور مینویسه : ي و س ف
از اونجایی که دیتابیس شما قرآن هست و در قرآن تمامی کلمات ، عربی هستند ، شما میباست موقع کلیک کردن سرچ ، یک شرط بزارید ،
و بگید که این کلمات اگه در استرینگ وجود داشت ، تبدیل به معادلش در عربی بشه: 1- کاف 2- یاء 3- هاء ( هـ ) ( یک تحقیق بکنید سر اینیکی ببینید توی سرچها اگه خوب در نیومد ، نیاز به تغییر داره اما گموان نمیکنم این مورد نیاز باشه )
همچنین شاید بهتر باشه که از یک کیبورد داخلی استفاده بشه که کلماتی مانند أ - إ هم داخلش لحاظ بشه
میتونید درصورت وارد کردن ـــــِــــ ـــــَــــ ـــــــُــــ ــــــًـــــ ــــــٍــــ ــــــٌـــــ ـــــّــــ و ... اینا رو توی نتایجتون نگنجونید ، چون ممکنه برخی کاربرا اینا رو هم وارد کنند.
امیدوارم که مشکلتون از اینجا آب خورده باشه.
داخل دیتابیسم یک ستون هست که آیات به صورت عربی هست و یک ستون دیگه که به صورت فارسی نوشته شدند و من کوئری رو روی همین ستون فارسی میزنم.مثلا کلمه موسی رو وقتی سرچ میکنم چه حرف آخرش "ی" بی نقطه باشه و چه "ی" با نقطه باشه هیچ خروجی نمیده ولی وقتی متن رو کپی پیست میکنم خروجی میده !
چند تا کلمه سرچ کردم که "ی" و "ک" داخلش نبود ،خروجی داد.ولی برای کلماتی که اینها داخلش هست باید چی کار کرد .چون من یک کلمه را با هر دو "ی" امتحان کردم خروجی نداد ولی وقتی از دیتابیس کپی پیست کردم خروجی داد
سلام دوست گرامی شما برای convert کردن حروف فارسی با حروف عربی هم میتوانید از رویداد تکست واچر editText استفاده کنید که با ورود هر حرفی اونو کانورت کنه بعد با کلیک روی دکمه مورد نظرتون متنو سرچ کنه یا اینکه از این لینک که خودم قبلا برای ساخت شمارشگر ازش استفاده کرده بودم استفاده کنید/////
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .