PDA

View Full Version : سوال: جستجو در كل سايت



z_bluestar
چهارشنبه 22 مهر 1388, 10:31 صبح
سـلام ، من مي خواهم يه Search براي سايت بنويسم كه اين جستجو شامل اطلاعات DataBase و صفحات كه داراي محتواي ثابت هستند شود .
آيا دوستان راهكـاري براي اين دارند ؟؟؟
من چه جوري مي تونم تمام جداول DataBase رو Search كنم و نتيجه اون رو به صورت لينك صفحات نشون بدم .
و صفحات با محتواي ثابت رو چه جوري مي شه search كــرد ؟؟

hamid1988
پنج شنبه 23 مهر 1388, 00:38 صبح
Search براي سايت بنويسم كه اين جستجو شامل اطلاعات DataBase و صفحات كه داراي محتواي ثابت هستند شود .
سه تا راه داری!
1- برای جستجوهات به دیتابیس کوئری بزنی که در این روش محتوای ثابت وبسایت رو نمیشه جستجو کرد!
2- از گوگل Custom Search استفاده کنی (مثل مال برنامه نویس) که برای این کار لازمه چند مرحله رو تو گوگل انجام بدی...
3- از نرم افزارهای ایندکس گذاری وبسایت مثل Search Engine Builder Professional (http://www.p30download.com/archives/internet/web_design/download_search_engine_b/) استفاده کنی!
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

پیشنهاد من: Google Custom Search

z_bluestar
پنج شنبه 23 مهر 1388, 11:10 صبح
میشه در مورد ساختار query توضیح بدید .
مثلا اگه من بخوام از یه StoreProcedure استفاده کنم و همه جداول DataBase رو بگردم و اونو به صورت یسری لینک از صفحات برگردونم چطوری باید این کــار را انجــام داد؟؟

یعنی چطوری نتایج جستجو جداول مختلف رو در یک جـا جمع کنم ؟؟

imanasp
پنج شنبه 23 مهر 1388, 11:40 صبح
خوب شما باید از XML استفاده کنی به این صورت که بعد از کوئری گرفتن از دیتابیس و استفاده از فضای نامی XML لینکها رو دخیره کنی

z_bluestar
پنج شنبه 23 مهر 1388, 23:11 عصر
اينجـا مسئله اي كه هست اينه كه من نميدونم چه طوري با يه store Procedure مي شه همه Data Base رو Search كـرد وبرگردوند .آخه هر table ستون هاي خاص خودشو داره .
و آيا مي شه از چند تا جدول Select كرد و يك جا نمايش داد ؟؟

alireza_s_84
جمعه 24 مهر 1388, 10:39 صبح
اينجـا مسئله اي كه هست اينه كه من نميدونم چه طوري با يه store Procedure مي شه همه Data Base رو Search كـرد وبرگردوند .آخه هر table ستون هاي خاص خودشو داره .
و آيا مي شه از چند تا جدول Select كرد و يك جا نمايش داد ؟؟
سلام دوست عزیز:
شما میتونید از سرویس ایندکس IIS استفاده کنید(Microsoft Index Service) البته بایستی مدیر هاست این سرویس رو برای شما فعال کرده باشه(معمولا هنگام نصب IIS این سرویس رو هم نصب میکنند مگه اینکه خیلی طمع داشته باشن تا پول بیشتری بگرین که در اینصورت دیگه از اونا هاست نگیرید)
یک نمونه کوچیکش رو پایین میذارم و بقیه جزییات هم میمونه با جستجوی خودتون:
این سرویس مثل یک دیتابیس میمونه(ساختارش رو نمیگم طرز رفتار رو میگم) شما میتونید با استفاده از دستورات SQL اونو جستجو کنید و یک سری اطلاعات مانند نام فایل ، پسوند ، سایز ، محتویات فایل ها(Word, HTML,Rtf, ...) ، مسیر فایل ها و غیره رو جستجو کنید .
تنها تفاوتش اینه که در معیارهایی مثل Select و Where و دیگر دستورات استاندار sql از روشهای متفاوتی با دیتابیس ها عمل میکنه.
این هم یک نمونه برای پر کردن یک دیتاتیبل:


System.Data.OleDb.OleDbConnection odbSearch;
System.Data.OleDb.OleDbCommand cmdSearch;

String strCnn = "Provider=\"MSIDXS.1\";Data Source=MyDocs;Integrated Security .=";
odbSearch = new System.Data.OleDb.OleDbConnection (strCnn);

strSQL = "select doctitle, filename, vpath, rank, characterization from scope()
where FREETEXT(Contents, '" + strSearch + "') order by rank desc ";

cmdSearch = new System.Data.OleDb.OleDbCommand(strSQL , odbSearch);

odbSearch.Open();

OleDbDataAdapter adpt = new OleDbDataAdapter(cmdSearch);

cmdSearch.ExecuteNonQuery();

DataTable dt = new DataTable();

adpt.Fill(dt, "SearchResult");

شما به جای MyDocs بایستی نام کاتالوگ وب سایت خودتون رو بذارید(میتونید نذارید و میتونید اسمش رو از مدیریت هاست بگیرید)
معیار بالا به ترتیب عنوان جستجو ، نام فایل ، مسیر فایل ، میزان تطابق متن مورد جستجو با عبارت یافت شده(از 0 تا 1000) رو برگشت میده.
البته چون معیارهای فیلتر گذاری یک مقدار پیچیده هستن (میتونید بر روی فایل های مختلف جستجو کنید) برخی شرکت ها کامپوننت هایی رو برای جستجو این سرویس ارائه کردن.
شما اگر نیاز به کامپوننتی در این زمینه دارید بنده کامپوننتی مختص دات نت برای اینکار نوشته ام که با قیمت بسیار مناسب میتونم اونو در اختیارتون بذارم.
در حال حاضر این کامپوننت رو حدود 15 شرکت در سطح وب استفاده میکنن و هیچ مشکلی نداره و نزدیک به دوسال هست که کار میده.
برای دریافت قیمت و جزییات بیشتر میتونید پیغام خصوصی بفرستید یا ایمل بزنید.
ضمنا اگه سوالی در زمینه برنامه نویسی این سرویس داشتید میتونید مطرح کنید.
موفق باشید

hjran abdpor
جمعه 24 مهر 1388, 13:59 عصر
1- میتوند از inner join استفاده کنید(البته اگه جدوال به هم رتبط داشته باشند{کلیدهای اصلی و خارجی})
2- از google custom اسفاده کنید.(بهترین راه حل)
3- ازindex استفاده کنید.

z_bluestar
جمعه 24 مهر 1388, 19:19 عصر
ميشه بيشتر در مورد ‍Google Custom توضيح بديد ، در سايت من كه همه اطلاعات صفحاتم از DataBase مي شه و ثابت نيستند و فقط چند صفحه با محتواي ثابت دارم ، آيا باز ‍Google Custom بهترين راه حلــه ؟؟

alireza_s_84
شنبه 25 مهر 1388, 00:51 صبح
ميشه بيشتر در مورد ‍Google Custom توضيح بديد ، در سايت من كه همه اطلاعات صفحاتم از DataBase مي شه و ثابت نيستند و فقط چند صفحه با محتواي ثابت دارم ، آيا باز ‍Google Custom بهترين راه حلــه ؟؟
به نظر من بهترین راه حل همون ایندکس سرویس خود ویندوزه.
چون مستقل از هر نوع داده ای و مکانی میتونید ازش استفاده کنید. ضمنا سرعت کار بالاتره و گزینه های بیشتری برای انتخاب دارید.
ضمنا مشکلاتی چون منت کشی گوگل رو هم ندارید.(یه خورده به فکر بومی سازی باشید)
یکبار از ایندکس سرویس استفاده کنید تا ببینید چه جادویی میکنه.(انگاری توی موتور جستجو دنبال یه چیزی بگردید!!!)
موفق باشید

m.hamidreza
شنبه 25 مهر 1388, 10:05 صبح
به نظر من بهترین راه حل همون ایندکس سرویس خود ویندوزه.


در واقع این روش در محتوای داینامیکی صفحات که از دیتابیس لود میشه هم جستجو میکنه؟ + اینکه سطح دسترسی های پوشه ها و فایل ها رو به چه صورت براش میشه تعریف کرد؟ اینجوری فکر کنم پوشه پوشه باید فایل ها مجزا باشن و هر کدوم رو که خواستیم مسیرشو بدیم. یعنی برای هر گروه سطح دسترسی یه نوع جستجو بنویسیم. یه مساله دیگه هم این هست که قابلیت or و and کردن کلیدهای جستجو میشه براش تعریف کرد؟


اينجـا مسئله اي كه هست اينه كه من نميدونم چه طوري با يه store Procedure مي شه همه Data Base رو Search كـرد وبرگردوند .آخه هر table ستون هاي خاص خودشو داره .
و آيا مي شه از چند تا جدول Select كرد و يك جا نمايش داد ؟؟

در spت باید برای هر جدول Select بنویسی. یعنی یه sp داشته باشی که پارامتر Search-Key رو بگیره، تک تک جداول رو Select-Where کنه و بعد جداول رو UNION کنی. منتها این روش داستان زیاد داره!
برای گوگل باید به این لینک (http://www.google.com/cse/) مراجعه کنی و این مقاله (http://dotnetslackers.com/articles/aspnet/Implementing-Search-in-ASP-NET-with-Google-Custom-Search.aspx) هم روشش رو توضیح داده.
موفق باشید.

alireza_s_84
شنبه 25 مهر 1388, 11:07 صبح
سلام دوست عزیز:


در واقع این روش در محتوای داینامیکی صفحات که از دیتابیس لود میشه هم جستجو میکنه؟

شما Search موتورهای جستجو رو در نظر بگیرید!
با آپدیت سایت مطالب این موتورها نیز به روز میشه. از چه طریقی؟؟؟ ایندکس گذاری صفحات + اسپایدرها.
شما با افزودن یک پست جدید خود به خود سرویس باعث به روز رسانی کاتالوگ وب ایندکس شده میشه.


اینکه سطح دسترسی های پوشه ها و فایل ها رو به چه صورت براش میشه تعریف کرد؟

نیازی به تعریف سطح دسترسی نیست . همانطور که یک وب سایت فقط به منابع خودش دسترسی داره(منظور منابعی چون دیتابیس و فایل های منبع خود وب سایت) شما تنها به کاتالوگ وب سایت خودتون از طریق این سرویس دسترسی دارید.
ضمنا تنها کاری که باید بکنید نصب این سرویس هنگام نصب IIS هست و اینکه برای وب سایت خاصی اونو غیر فعال نکنید(چون بصورت پیش فرض برای تمامی وب سایتها فعال است)


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

هیچ نیازی به این کار نیست. براتون یه مثال میزنم:
شما یک Table توی دیتابیس تون دارید. قاعدتا میتونید با یک دستور Select تمامی رکوردها رو استخراج کنید و با یک شرط Where این داده ها رو فیلتر کنید.
حالا برای جستجوی کاتالوگ دقیقا شما همین کار رو میکنید با این تفاوت که به جای کار کردن با دیتابیس از کاتالوگ ، به جای نام ستون ها از فیلدهای کاتالوگ و به جای عبارات شرطی از Scop ها استفاده میکنید.
توی مثالی که در پست قبلی زدم شما میتونید متوجه تفاوتهای جزیی باشید.


یه مساله دیگه هم این هست که قابلیت or و and کردن کلیدهای جستجو میشه براش تعریف کرد؟

برای مثال استخراج مسیر فایل با استفاده از فیلد FilePath صورت میگیره شما میتونید این فیلد رو مانند یک ستون جدول در نظر بگیرید پس جواب سوال آخرتون هم مثب هست چون شما میتونید در قسمت Where هر چیزی رو دلتون خواست با OR و یا AND فیلتر کنید (همچنین در انتخاب نام فیلدهای مورد نیاز جهت استخراج فیلدها)
موفق باشید

z_bluestar
شنبه 25 مهر 1388, 12:48 عصر
شما یک Table توی دیتابیس تون دارید. قاعدتا میتونید با یک دستور Select تمامی رکوردها رو استخراج کنید و با یک شرط Where این داده ها رو فیلتر کنید.
حالا برای جستجوی کاتالوگ دقیقا شما همین کار رو میکنید با این تفاوت که به جای کار کردن با دیتابیس از کاتالوگ ، به جای نام ستون ها از فیلدهای کاتالوگ و به جای عبارات شرطی از Scop ها استفاده میکنید.


یعنی منظورتون اینه که صفحاتی که می خوام Search نشن فقط کـافیه که یه شرط تو Scop داشته باشم ؟؟؟؟؟؟
و نیاز به تعریف حق دسترسی ندارم ؟:متفکر:

m.hamidreza
شنبه 25 مهر 1388, 16:25 عصر
هیچ نیازی به این کار نیست.


در مورد سطح دسترسی ها منظورم این هست که مثلا کاربران Unregistered نتونن در محتویات صفحاتی که کاربران Registered فقط میتونن بهش دسترسی داشته باشن جستجو کنن. این حالت در سطح کاربران Registered هم هست چون ممکن هست سطح دسترسی های متفاوتی داشته باشن. ضمن اینکه فکر نمیکنم گوگل بتونه صفحاتی که نیاز به Login دارن رو ایندکس کنه.
ممنون.

z_bluestar
دوشنبه 27 مهر 1388, 10:58 صبح
میشه یه نفر یه کم بیشتر توضیح بده ؟!؟
آیا Microsoft Index Service می تونه صفحاتی رو که نیاز به Login دارند رو Index کنه ؟؟؟
بالاخــره تو این روش ، سطح دسترسی هـا و فیلتر هـا چگونه انجـام می شه ؟؟؟
:متفکر:

alireza_s_84
دوشنبه 27 مهر 1388, 12:25 عصر
در مورد سطح دسترسی ها منظورم این هست که مثلا کاربران Unregistered نتونن در محتویات صفحاتی که کاربران Registered فقط میتونن بهش دسترسی داشته باشن جستجو کنن. این حالت در سطح کاربران Registered هم هست چون ممکن هست سطح دسترسی های متفاوتی داشته باشن.

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

barnameye_man
شنبه 14 آذر 1388, 13:57 عصر
میشه در مورد این روشها بیشتر توضیح بدین چون من هیچ اطلاعاتی از این روشها ندارم

http://barnamenevis.org/forum/showthread.php?t=191767

Saber_Fatholahi
دوشنبه 16 آذر 1388, 23:25 عصر
خوب دوست عزیز چیزی که به ذهن من میرسه اینه که از جداولت جداگانه کویری بگیری و با union اونهارو یکی کنی
حالا از این کویری میتونی کویری بگیری البته مشکلی که داره اینه که باید فیلدهاتو سعی کنی هم نوع در نظر بگیری
این یه راه ساده هست
البته اساتید شاید نظر بهتری بدن
موفق باشی

Mahdi-563
سه شنبه 17 آذر 1388, 15:19 عصر
یه راه دیگه این که از جداول جداگانه کویری بگیریم و بعد هر کدام را در یک DATATABLE اضافه کنیم.
دردسر union هم نداره

Alireza_Salehi
سه شنبه 17 آذر 1388, 15:26 عصر
شما میتونید خیلی راحت با چند تا دستور SELECT پشت سرهم که با کلمه UNION ادغام میشن تمام جداول رو جستجو کنید حتی اگر ساختار جداول متفاوت باشد.

نکته اینه که خروجی تمام SELECT ها باید یکسان باشد.
هم OrderBy و هم GroupBy قابل انجام یعنی مرتب سازی و طبقه بندی هم در دسترس شماست.

در یک SP هم همه این کارها رو میشه انجام داد، به همین سادگی.


البته جستجوی گوگل هم گزینه مناسبی هست، جدیدا امکانات زیادی بهش اضافه شده...
Google Custom Search

barnameye_man
یک شنبه 22 آذر 1388, 15:17 عصر
ممنونم دوستان من تعدادی از صفحاتم هم ایستاست یعنی مطالبش ثابت هست می خوام اونها رو هم جستجو کنم لطفا در این مورد هم کمکم کنید
ممنون میشم

z_bluestar
یک شنبه 22 آذر 1388, 16:15 عصر
من Custom Google Search استفاده کردم ولی مشکل که درام اینه که می خوام بدونم ، آیا میشه یک پارامتر از Query String گرفت و انو پاس داد به Custom Google Search ؟؟؟

Alireza_Salehi
یک شنبه 22 آذر 1388, 23:05 عصر
من Custom Google Search استفاده کردم ولی مشکل که درام اینه که می خوام بدونم ، آیا میشه یک پارامتر از Query String گرفت و انو پاس داد به Custom Google Search ؟؟؟
بله میشه میتونید عملکرد اون اسکریپتی که گوگل میده رو با یک UserControl پیاده سازی کنید.

این یک نمونه:
http://fohjin.blogspot.com/2008/04/google-custom-search-engine-cse-for.html
بازم بگردید هست.

barnameye_man
دوشنبه 23 آذر 1388, 08:25 صبح
میشه بیشتر در مورد Custom Google Search توضیح بدین که چی هست؟ و چجوری ازش استفاده کنم؟؟

Alireza_Salehi
دوشنبه 23 آذر 1388, 09:18 صبح
به این وب سایت مراجعه می کنید:
http://www.google.com/cse/
ثبت نام می کنید
وب سایت خود را ثبت می کنید
بعد از ثبت سایت به شما کدی می دهد که باید در کد سایت خودتان قرار دهید.
بقیه توضیحات در راهنمای خود گوگل وجود دارد.

برای این که این شیوه به خوبی عمل کند باید google sitemap مناسبی برای سایتتان درست کنید و به cse معرفی کنید.

barnameye_man
دوشنبه 23 آذر 1388, 13:43 عصر
من نمی خواهم از Custom Search Engine استفاده کنم راه حل دیگه وجود نداره؟؟؟

fa_karoon
پنج شنبه 20 اسفند 1388, 22:59 عصر
پیشنهاد من: Google Custom Search


می شه درباره این روش یه مقدار توضیح بدید آیا زبان فارسی رو هم پشتیبانی می کنه؟

Milad Mohseny
پنج شنبه 20 اسفند 1388, 23:07 عصر
می شه درباره این روش یه مقدار توضیح بدید آیا زبان فارسی رو هم پشتیبانی می کنه؟
با فارسي مشكلي نداره اگه به بالاي همين سايت هم توجه كني يه Google Custom Search ميبيني.
كارباهاش خيلي سادس چيزي نداره

به این وب سایت مراجعه می کنید:
http://www.google.com/cse/
ثبت نام می کنید
وب سایت خود را ثبت می کنید
بعد از ثبت سایت به شما کدی می دهد که باید در کد سایت خودتان قرار دهید.
بقیه توضیحات در راهنمای خود گوگل وجود دارد.

Mahdi-563
جمعه 21 اسفند 1388, 20:07 عصر
به نظر من مشكلي كه Google Custom Search داره اينه كه تغييرات كه تويه كش نباشه جستجو هم نمي شه و اين براي يك سايت پويا كه هر روز محتواش آپديت مي شه ضعف بزرگيه

من كه دارم يكي مي نويسم. فكر كنم راه حل خوبيه!؟

mohamad_a226
جمعه 21 اسفند 1388, 21:46 عصر
من یه سوالی داشتم. من میخواستم یه جایی موتور جستجو واسه سایت بسازم. یعنی کاری که همین Google Custom Search میکنه.
ولی یه سری چیزا هست که نمیدونم چیه.
یه MYSEARCHTERM میخواد. یا POST parameters میخواد. راستش درست نفهمیدم. میگه:


The post parameters URL should contain MYSEARCHTERM.



Fill in only if the search engine uses the POST method.
Example: q=MYSEARCHTERM&param2=y&param3=z



یعنی در اصل گزینه هایی که تو شکل پیوست گذاشته رو نفهمیدم که چطور باید پر کنم :ناراحت:

ممنون میشم راهنماییم کنید.

mohamad_a226
یک شنبه 23 اسفند 1388, 15:50 عصر
کسی نمیدونه باید چیکار کنم؟

clover
یک شنبه 23 اسفند 1388, 23:51 عصر
به نظر من مشكلي كه Google Custom Search داره اينه كه تغييرات كه تويه كش نباشه جستجو هم نمي شه و اين براي يك سايت پويا كه هر روز محتواش آپديت مي شه ضعف بزرگيه
در سایت مپ می تونید این زمان به روز رسانی را برای تمام صفحات یا برای هر صفحه به صورت مجزا تنظیم کنید
کلا در گوگل وب مستر می تونید تنظیمات مختلفی را برای مدت به روز رسانی و رفتار خزنده های گوگل انجام بدید.

Mahdi-563
شنبه 18 اردیبهشت 1389, 13:00 عصر
در سایت مپ می تونید این زمان به روز رسانی را برای تمام صفحات یا برای هر صفحه به صورت مجزا تنظیم کنید
کلا در گوگل وب مستر می تونید تنظیمات مختلفی را برای مدت به روز رسانی و رفتار خزنده های گوگل انجام بدید.

مرسي جلب بود. فكر نمي كردم اين جوري باشه.