ورود

View Full Version : جستجو PDF,DOC,Sql Server



binyaz2003
یک شنبه 21 اسفند 1384, 08:46 صبح
سلام
می خوام فایلهای PDF,DOC رو در Sql Server ذخیره کنم تا اینجا هم مشکل ندارم با یک فیلد جنرال اما می خوام ببینم میشه داخل اونها جستجوی یک متن رو انجام داد اونم فارسی؟

javad_hosseiny
یک شنبه 21 اسفند 1384, 15:53 عصر
فکر نکنم
چرا که شما به صورت طبیعی نیز قادر به جستجو در فایلهای pdf و doc (مخصوصا اون هم فارسی ) نیستید
در مورد pdf تا اونجایی که می دونم هنوز هیچ برنامه ای قادر به گرفتن خروجی تکست مناسب از فایلهای pdf نیست (البته منظور عبارات فارسی است ولی برای عبارات انگلیسی مشکلی نیست)
(من حتی نسخه پروفیشنال me اکروبات را نیز گرفتم ولی آن هم با خروجی فارسی مشکل داشت و البته یکی دو جین برنامه های مشابه که در سایتهایی همچون p30world,... معرفی شده است)
در مورد فایل doc نیز توجه داشته باشید که علاوه بر متون نمایشی کلیه علائم , فونت ها و ... نیز در فایل ذخیره می شود انجام این کار مشابه جستجو در یک فایل text معمولی نیست (شاید اگر در فایل rtf می خواستید جستجو کنید راحت تر بود) ولی نهایتا اگر نحوه فورمت بندی و چینش اطلاعات فایل ورد را بدست آورید شاید بتوان اینگونه عمل کرد
(خیلی وقت پیش من نیز چنین مشکلی داشتم که می خواستم در متن داخلی یک سری فایلهای زرنگاری (ادیتور زمان خدابیامرز داس) (که البته هنوز هم کلی طالب و کاربر دارد) جستجو کنم که آن هم برای بدست آوردن فورمت و نحوه چینش فونتها و جداول و ... اطلاعاتش کلی دردسر داشتیم)
ولی یک راه حل ساده این است که بصورت ocx برنامه ورد را فراخوانی کرده فایل را باز کنید و سپس با استفاده از دستور keyboard متن موردنظر خود جهت جستجو را در آن پیاده کنید

ومطلب آخر اینکه چطور به این نتیجه رسیدی که فایلهای ضمیمه (Pdf,doc,...) را در داخل جدول نگهداری کنید و چرا آدرس آنها (و یا حداقل کپی در یک فولدر خاص برنامه (مخصوصا اگر در شبکه است که با تنظیم پرمیشن فولدر امکان دسترسی خاص (فقط خواندن و یا...) را به آن داد )را در جدول ذخیره نکردید و اصل فایل را در دیتابیس ذخیره می کنید (که باعث افزایش حجم و مشکلات دیگر برای دیتابیس اینجین می شود)
(البته مشابه این نکته به عنوان یک تایپیک در این سایت چندین بار بحث شده است (نحوه نگهداری تصاویر در بانک (ذخیره آدرس و یا ذخیره اصل خود فایل) )

binyaz2003
یک شنبه 21 اسفند 1384, 17:16 عصر
در مورد جستجو در فایلها در سایت universalthread که همین سوال رو پرسیدم این جواب و به من دادن :

You can use SQL Server full-text search. SQL 2000 comes with filters for following file extensions: .doc, .xls, .ppt, .txt, and .htm. You can download Adobe PDF IFilter v6.0 from http://www.adobe.com/support/downloads/detail.jsp?ftpID=2611

با اینکه من در این مورد چند پست از شما در قسمت اسکیوال دیدم نظرتون چیه؟

در مورد باز کردن فایل اونوقت باید روی همه کلاینتها ورد و آکروبات ریدر نصب باشه
و در مورد Share کردن فایلهااینکه شاید کاربر نرم افزار نخواد بعضی فایلها رو بقیه ببینند و بقیه مسائل مانند مطمئن بودن از وجود فایلها و ...

javad_hosseiny
دوشنبه 22 اسفند 1384, 00:24 صبح
در رابطه با قابلیت full-text search می توان گفت که امکان فوق العاده ای در جستجو با استفاده از fts دارد ولیکن اکثر این قابلیت ها در زبان انگلیسی است و برای استفاده از این قابلیتهای در زبان فارسی می بایستی با توجه به نیاز و نوع جستجو خود آن را customize کنید که این خود امری زمان بر و دردسرساز هست (البته همه اینها منوط به این است که بخواهید قابلیتهای خاص در جستجو خود داشته باشید (کلمات هم خانواده, مشابه و مشتقات و...) و الا در جستجوهای ساده اصلا این بحث نیست
البته همانطور که اطلاع دارید این روش منحصر در sqlserver نبوده و شما قادر به استفاده از این قابلیت در سایر دیتابیس اینجین های بزرگ (همچون dbisam که به نظر من در راحتی نصب و کارکرد و سرعت به نسبت دردسرهای sqlserver گزینه مناسبتر هست) و یا اینکه مشابه این روش را خودتان شبیه سازی کنید (ایجاد لیست کلمات غیرتکراری از اطلاعاتتان)
(حتی بر روی همان زبان انگلیسی نیز برخی وقتها به علت تشخیص عبارت جستجوی شما به عنوان یک Noise word (کلمه زائد (پارازیت)) بر روی برخی کلمات (مخصوصا به عنوان تک کلمه ) با مشکل مواجه می شود.
و البته راجع به این مقوله بخواهیم مطلب بگوییم بحث به درازا کشیده می شود ولی در کل امکانات و قابلیتهای خوبی دارد
نسبت به استفاده از ایمپورت فایلهای موردنظر (doc,pdf,...) به داخل جدول و جستجو بر آن تاکنون من موردی نداشتم ولی با توجه به زبان فارسی بعید می دونم (مخصوصا در ضمینه فایلهای pdf) و نهایتا اگر تست شما به جواب مناسبی رسید خوشحال میشم ما راهم باخبر کنید.

در ضمینه نصب برنامه ورد و آکروبات بر روی سیستم ها جهت نمایش فکر کنم چنین باشد ولیکن راجع به نصب الزامی به نصب کامل برنامه ها نیست در مورد نمایش pdf که در همین سایت الی ماشاءالله ocx,dll برای این منظور (نمایش فایلهای pdf بدون نصب برنامه ای ) می باشد و در ضمینه ورد نیز می تونید از word basic استفاده کنید .

و در مورد جدا بودن فایلها از جدول بانک اطلاعاتی شما می تونید دسترسی به آنها را در داخل برنامه همانطور که دسترسی به رکورد موردنظر را محدود می کنید عمل کنید و در خارج از محیط برنامه نیز همانطور که عرض کردم با تعیین permission برای فولدری که اطلاعات داخل آن کپی می شود (به طور مثال برای هر کاربر فولدری جداگانه با اجازه دسترسی فقط کاربر موردنظر ایجاد شده ) و تنظیم اعتبار فقط برای کاربران خاص (حتی قابلیت نمایش) مجاز باشد
ویا ساده تر اینکه مدیر شبکه برای هر کلاینت یک یوزر تعریف و دسترسی آنرا به محل ذخیره تصاویر بر روی شبکه مشخص کند
و نهایتا درنظر بگیرید که با این کار به علت کم کردن حجم دیبتایس خود (آن هم به مقدار زیاد) خیلی از عملیاتهای همچون پشتیبان گیری, بازیابی, جستجو , جلوگیری از کند شدن سیستم و .... (و یا نهایتا درصورت خرابی و یا حذف دیتابیس فایلهای ضمیمه باقی می مانند)
البته استفاده از این روش دردسرهایی نیز دارد همچون:
در صورت حذف یک فایل توسط کاربر ویا ادمین و یا... لینک آن در جدول نامعتبر می شود (البته جهت این منظور می توانید روتینی تعریف کنید که کلیه لینک های موجود در جدول را تست و درصورت عدم وجود فایل آن را گزارش کند)
و یا اینکه به علت تنظیم خصوصیات برای شاخه موردنظر شما باید علاوه بر سیستم امنیتی دیتابیس با سیستم امنیتی سیستم عامل نیز تعامل داشته باشید
ویا در صورت تمایل جهت پشتیبان گیری از فایلها به هنگام پشتیبان گیری از جداول می بایستی توسط روتینی جداگانه این کار انجام شود (کپی کلیه فایلهای موجود در لینک جداول به آدرس موردنظر)
و نهایتا با توجه به نوع عملکرد و نیاز خود روش مناسب را برگزینید
(ولی نهایتا در چندین مورد به این نتیجه رسیدم که به علت افزایش بسیار زیاد حجم دیتابیس اصلی بسیار از عملیتهای نرمال و ساده به زمانهای بیشتری نیاز داشته (ونهایتا سرور با کندی کار می کند) و پس از تغییر نوع ذخیره سازی فایلهای ضمیمه (اینجا منظور تصاویر است) بازدهی سرور تا حدی زیادی بهبود پیدا کرد

binyaz2003
دوشنبه 22 اسفند 1384, 12:38 عصر
ممنون برم ببینم چی میشه