PDA

View Full Version : یافتن کلمات اعراب دار در Sql Server 2005



hdv212
شنبه 29 اردیبهشت 1386, 00:26 صبح
سلام
من روی یه پروژه میخوام کار کنم که از جملات عربی و احادیث و ... توش استفاده شده(اونم با اعراب)، میخوام ببینم راهی هست که بشه کلمه ی بی اعراب رو بهش بدیم، و متن با اعراب رو ازش بگیریم، مثال :
توی جستجو بنویسیم الحسین و توی جستجو، الحُسَین هم پیدا بشه. مرسی

titbasoft
شنبه 29 اردیبهشت 1386, 10:09 صبح
تا جایی که من تحقیق کردم، راه حلی مستقیمی برای بدست آوردن نتایج با اعراب با استفاده از کیوردهای بدون اعراب (البته برای استفاده از ایندکس های FTS) وجود نداره. بهترین راه درست کردن یک Hash Table است که توی اون معادل های بدون اعراب متون به اعراب دار اون Hash بشن و در زمان جستجو کلیه کیوردهای با اعرابی که به یک کیورد بدون اعراب Hash شده اند جستجو بشن. البته در جستجو های پیچیده تر مثل جستجو های ترکیبی و Phrase ها کار کمی مشکل تره.


به هر حال ظاهرا شما سمت کلاینت می خواهید این کار رو انجام بدید.
http://www.barnamenevis.org/forum/showthread.php?t=68099

hdv212
شنبه 29 اردیبهشت 1386, 10:19 صبح
titbasoft عزیز مرسی از یادآوریت، ولی تمام کدهایی که تو این تاپیک رد و بدل میشید به ویبی بود، من ویبی زیاد بلد نیستم، تازه در اون سورس کدی که دوستمون گذاشته بود در مورد قرآن، اصلا از دیتابیس استفاده نکرده بود، و چون ویبی بود من متوجه نشدم چکار کرده، اگه کسی توی دیتابیس یا توی سی شارپ این کار رو کرده به منم بگه، مرسی

hdv212
شنبه 29 اردیبهشت 1386, 14:50 عصر
یکی کمک کنه،
راستی من تو جستجوهایی که تو سایت برنامه نویس میگشتم، آقای ثباتی تعاریفی راجع به Full Text Search کردن، مشتاق شدم در این مورد بیشتر بدونم و همینطور اینکه میتونه این مشکل منو که همون یافتن کلمه ی بدون اعراب در متن با اعراب بود، برآورده کنه ؟

AminSobati
یک شنبه 30 اردیبهشت 1386, 20:49 عصر
حامد جان متاسفانه FTS با اعراب مشکل داره

hdv212
یک شنبه 30 اردیبهشت 1386, 22:03 عصر
AminSobati عزیز میشه منظورتونو واضح تر بگید، مشکل داره یعنی اینکه ممکنه برنامه دچار اشکال بشه ؟

در ضمن، بچه ها یه راه حلی ارائه کردن واسه جستجوی کلمه ی بدون اعراب توی متن با اعراب، این بود که یه نسخه از متن بی اعراب رو در یه فیلد دیگه ذخیره کنم و موقع جستجو از اون استفاده کنم،خب حالا اجازه بدید من شرایطی که دارم باهاش کار میکنم رو عرض کنم :
بانکی که انتخاب کردیم، sql 2005 Express هست
امکان FTS رو میخواهیم توش به کار ببریم
حجم اطلاعات حدود 15 جلد کتاب حداقل 300 صفحه اییه، با توجه به اینکه باید یه فیلد اضافی هم متن بی اعراب رو در خودش ذخیره کنه، حجم دیتابیس حدود 30 جلد کتاب میشه، به نظر شما منظقی هست و آیا شدنی هست این کار ؟ (با شرایطی که گفتم)
روی بانک access چی ؟؟ من فکر کنم با sql 2005 Express مشکلی نباشه، تا اونجایی که توی bol دیدم، تا حجم 4 گیگ و امکان fts رو پشتیبانی میکنه، حالا منتظر نظر دوستان میمونم ببینم چی میگن.

AminSobati
دوشنبه 31 اردیبهشت 1386, 00:49 صبح
منظور من از مشکل اینه که مثلا "شدت" با "شدٌت" فرق داره و اگر شما "شدت" رو جستجو کنین، "شدٌت" پیدا نمیشه.
ذخیره کردن نسخه بدون اعراب تنها روشه، چاره ای هم نیست. پس با توجه به اینکه تا 4 گیگابایت ساپورت میشه در Express Edition، قائدتا مسئله خاصی نیست.

titbasoft
دوشنبه 31 اردیبهشت 1386, 23:08 عصر
البته همه این دردسر ها برای استفاده مستقیم از FTS است. با توجه به امکاناتی که روی SQL Server 2005 بوجود اومده، (مثلا یک managed Function ساخت که کار تبدیل های اعراب دار رو به بدون اعراب و بالعکس انجام بده) پساده سازی اون خیلی راحت تره.

ضمنا اگر روی مشتق یابی کار میکنید، مایکروسافت یک پتچ برای Indexing Service داره که امکان مشتق یابی رو اضافه میکنه.