توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : نوشتن جستجو...
aliff
May 10th, 2016, 23:51
سلام
ما یه مدیریت محتوا داریم
می خواستیم جستجویش رو بنویسیم
مثلا:
می خواهیم در سایت خبری اگر جمله زیر رو سرچ کردن
انتخابات ریاست جمهوری ایران
1-جمله بالا کامل جستجو بشه و خبر های که جمله بالا داخلش بود (بدون پیش و پس کردن کلمات یعنی دقیقا جمله بالا) رو لیست کن
2-بعد بگرده در متن خبر ها هر کدام که کلمه های:
انتخابات
ریاست
جمهوری
ایران
بود رو پیدا کنه و به ترتیب هر کدام از خبر ها تعداد کلماتی که در بالا گفتم (4 مورد) داخلش بیشتر بود رو به ترتیب نمایش بده
مثلا اول خبرهای که 4 کلمه داخل بود رو نمایش بدهد بعد 3 تا کلمه بود نمایش بده و ...
البته اینو بگم می خوام با یک بار رفتن و کل مطالب را خواند تمام جستجو ها رو انجام دهد نه این که یک بار کل جمله رو سر کنه بعد تک تک کلمات رو سرچ کنه و آخر لیست کند
ممنون میشم کمک کنید
miladtnt
May 11th, 2016, 00:03
میتونه اول سرچ کنه اگه از این 4 تا کلمه بود فراخوانی کنه بعد براش دستور شرطی بزارین و... که اگه دقیقا این جمله توش بود و اگه سه تا بود و دوتا بود به ترتیب نشون بده
T.Toosi
May 11th, 2016, 00:03
باسلام، ابتدا مدیریت محتوا شما چیست و با چه زبانی نوشته شده است.
aliff
May 11th, 2016, 00:47
میتونه اول سرچ کنه اگه از این 4 تا کلمه بود فراخوانی کنه بعد براش دستور شرطی بزارین و... که اگه دقیقا این جمله توش بود و اگه سه تا بود و دوتا بود به ترتیب نشون بده
ممنون خب چگونه سرچ کنه؟
می خواهیم با یک بار سرچ اون نتیجه ای که خدمتون عرض کردم رو بدست بیاوریم نه این که یک بار یکی از کلمات رو جستجو کنه باز کلمه بعد رو جستجو کنه تا آخر... و آخر دستور شرطی بذاریم
آیا راهی هست که با یک بار جستجو در کل اطلاعات این عمل انجام بشه؟
شما فکر کنید ما ده ها هزار خبر داریم
باسلام، ابتدا مدیریت محتوا شما چیست و با چه زبانی نوشته شده است.
سلام
ممنون بات پاسخ
c# , sqlserver
T.Toosi
May 11th, 2016, 01:51
ممنون خب چگونه سرچ کنه؟
می خواهیم با یک بار سرچ اون نتیجه ای که خدمتون عرض کردم رو بدست بیاوریم نه این که یک بار یکی از کلمات رو جستجو کنه باز کلمه بعد رو جستجو کنه تا آخر... و آخر دستور شرطی بذاریم
آیا راهی هست که با یک بار جستجو در کل اطلاعات این عمل انجام بشه؟
شما فکر کنید ما ده ها هزار خبر داریم
سلام
ممنون بات پاسخ
c# , sqlserver
راهنماییتون کنم قادر به کد نویسی هستید که ؟ آشنایی با دستورات sql دارید ؟
miladtnt
May 11th, 2016, 04:40
اقای t.toosi بهتر میتونن راهنمایی کنن
باید تو sql وقتی فراخوانی میکنین یه متغیر درست کنین مثلا x بعد یه حلقه قرار بدید برا تعداد کلمات اون چیزی که سرچ میشه به ازای هر کلمه سینتکس رو تو متغیر اضافه کنه و یه رشته بسازه مثل و مثل یه دستور شرطی SQL باشه
اینجوری شه اخرش :
MOTEGAYER = TEXT LIKE %ENTEKHABAT% OR TEXT LIKE %RIYASAT% OR TEXT LIKE %JUMHURI%
توجه کنین اونایی که بین %گذاشتم متغیرن و %بکار میره که یعنی بعدو قبلش میتونه کلمات دیگه باشه
خب حالا همه اونایی که این کلماتو دارن رو دراوردیم
بریزید تو ارایه هرکودومو و دستور شرطی بزارید بقیش رو ادامه بدید
- - - Updated - - -
اینم بگم وقتی اون متغیر رو ساختید اینجور از دیتابیس سلکت میکنین
SELECT * FROM DB WHERE MOTEGAYER
aliff
May 12th, 2016, 07:59
بله خودم برنامه نویس هستم
- - - Updated - - -
تا اینجاشو مشکلی ندارم ولی میخوام براساس وجود کلمه ها سورت بشه
مثلا اونیکه بیشترین کلماتو داره بیاد اول و ...
miladtnt
May 12th, 2016, 09:58
اونو از دیتابیس سورت نکنین خودتون دستور شرطی بزارین
T.Toosi
May 12th, 2016, 10:48
شما ابتدا جمله را سرچ کن خبر هایی که مساوی بودند داخل یک آرایه دو بعدی بریزید همراه با یک کانتر، سپس جمله را اسپلیت کنید به ToCharArray الان یک آرایه به نام searchvalues، حالا متن خبر هم با اسپیس اسپلیت کنید که یک آرایه میشود با نام newscontent، حالا سه تا حلقه تو در تو نیاز داریم که در آرایه اولی به ازای هر newscontent یک حلقه با شرط قرار میگیرد برای آرایه searchvalues در حلقه سوم به ازای هر دفعه که پیدا میکند کانتر آرایه اولی را یکی اضافه کنید و در آخر به ترتیب کانتر یا سورت آرایه دو بعدی که ساختیم میتوانید محتوا یا .. نمایش دهید.
aliff
May 12th, 2016, 13:03
شما ابتدا جمله را سرچ کن خبر هایی که مساوی بودند داخل یک آرایه دو بعدی بریزید همراه با یک کانتر، سپس جمله را اسپلیت کنید به ToCharArray الان یک آرایه به نام searchvalues، حالا متن خبر هم با اسپیس اسپلیت کنید که یک آرایه میشود با نام newscontent، حالا سه تا حلقه تو در تو نیاز داریم که در آرایه اولی به ازای هر newscontent یک حلقه با شرط قرار میگیرد برای آرایه searchvalues در حلقه سوم به ازای هر دفعه که پیدا میکند کانتر آرایه اولی را یکی اضافه کنید و در آخر به ترتیب کانتر یا سورت آرایه دو بعدی که ساختیم میتوانید محتوا یا .. نمایش دهید.
ممنون
ولی اینطوری فشار زیادی میاره
شما حساب کنید باید داخل 10 هزارتا مطلب که هرکدام حداقل 20 خط هست جستجو کنه، با این روش کلا میترکه فکر کنم
ما دنبال راهی هستیم که جستجو را با سریعترین روش انجام بده
یکی از دوستان گفتن پترن ایجاد میشه داخل دیتابیس و میدیم به جستجوی خود دیتابیس و میگرده
یکی دیگه کتابخانه لوسین را معرفی کرد
در یک انجمن هم استفاده از جستجو بصورت full text search پیشنهاد دادن
T.Toosi
May 12th, 2016, 15:06
ممنون
ولی اینطوری فشار زیادی میاره
شما حساب کنید باید داخل 10 هزارتا مطلب که هرکدام حداقل 20 خط هست جستجو کنه، با این روش کلا میترکه فکر کنم
ما دنبال راهی هستیم که جستجو را با سریعترین روش انجام بده
یکی از دوستان گفتن پترن ایجاد میشه داخل دیتابیس و میدیم به جستجوی خود دیتابیس و میگرده
یکی دیگه کتابخانه لوسین را معرفی کرد
در یک انجمن هم استفاده از جستجو بصورت full text search پیشنهاد دادن
همه روش ها را تست کنید آخر هم memory usage ها را مانیتور کنید سپس بهترین الگوریتم را پیدا خواهید کرد البته چیزی که بنده نوشتم جستجوی خطی و خیلی مقدماتی هست، لوسین از اینورت ایندکس استفاده میکند به احتمال خیلی زیاد بهترین نتیجه را با این کتابخانه خواهید گرفت.