PDA

View Full Version : حرفه ای: جستجو پیشرفته کمک !



amir_arsalan_k2
جمعه 20 تیر 1393, 20:07 عصر
با سلام خدمت همه دوستان و برنامه نویسان

من توی سایتم میخوام یه موتور سرچ بزارم که چندین فیلد در دیتابیس چک کنه .....

121042

این کد کنترل :


public ActionResult Serachresult()
{

AdsRepository adlist = new AdsRepository();


ViewBag.Adlist = adlist.Select().Where(m => m.ID == 2);

return View("Home");
}



که توی ویو با یه foreach مقادیر نمایش میده ......
اما نمیدونم چطور این کارو انجام بدم اگه یه شرط بود راحت بود اما الان 10 تاس یکم گیج شدم ......
کسی میتونه کمکم کنه ؟؟؟؟؟

hadi0x7c7
جمعه 20 تیر 1393, 21:10 عصر
برای پیاده سازی سرچ ها معمولا از این (http://www.codeproject.com/Articles/320219/Lucene-Net-ultra-fast-search-for-MVC-or-WebForms)استفاده میکنن ولی اگه خیلی دیتا ندارید کافیه دقت کنید که 6، 5،4،7 یکی هستن(رادیو باتن هست) ولی اول بهتره بگید که مدل شما دارای چه فیلد هایی هست؟ همه این گزینه هایی که گفتید فیلد های دیتاتون هستن؟

----------------------
یه کار بهتر اینه که یه کلاس سرویس بسازید که این کلاس چند تا متد داره هرکدومش برای یکی از این گزینه هایی که گفتید بعد هرکدام از این متدا میتونن یه IEnumerable برگردونن (و یه دونه هم بگیرن) و جستسجوهای پیشرفته رو به راحتی میتونید با چند بار فراخانوی این متدا پیاده کنید

amir_arsalan_k2
جمعه 20 تیر 1393, 22:43 عصر
بله من یک جدول دارم برای آگهی هام که تمام این گزینه هارو داره ......



ID

int



status
bit


confirm
bit


featured
bit


visit
int


user_id
int


category
nvarchar(50)


subcategory
nvarchar(50)


title
nvarchar(50)


description
nvarchar(500)


price
bigint


date
datetime


city
nvarchar(50)


area
nvarchar(50)


urgent
bit


url
nvarchar(100)


name
nvarchar(50)


email
nvarchar(50)


tel
nvarchar(11)


mobile
nvarchar(11)


image1
nvarchar(50)


image2
nvarchar(50)


image3
nvarchar(50)


image4
nvarchar(50)


personality
bit


forx
bit


wantx
bit

amir_arsalan_k2
یک شنبه 22 تیر 1393, 11:31 صبح
کسی نیست کمکم کنه ..... :گریه:

minaforotan
یک شنبه 22 تیر 1393, 17:54 عصر
اصن نیاز به این همه پیچ و تاب نیس
یک تابع درست کن تابع search
بعد ورودی هاش همون ایتم هایی که میخوای سرچ کنی باشن
بعد یک مقدار رشته ای درست کن که توش دستور select ات باشه

بعد با SqlQuery اون و برگردون

مثلا



public ActionResult search(string nam, string model)
{

string strselect;

strselect = "select * from dbo.Products where ID>0 ";

if (!String.IsNullOrEmpty(nam))
{ strselect = strselect + " and NameFarsi like N'%" + namfarsi + "%'"; }


if (!String.IsNullOrEmpty(model))
{ strselect = strselect + " and Model like N'%" + model + "%'"; }



var x = db.Products.SqlQuery(strselect).ToList(); ;


return View(x);


}





فقط دستورهایی که میخوای داشته باشی و قبلش تو sql اجرا بگیر ok که شد بعد اینجا بزار

sunn789
یک شنبه 22 تیر 1393, 23:22 عصر
ببینید راه حل ساده ای که من اجرا میکنم میتونه کمکتون کنه
اول اینکه توی ویوو یه همچین کدی دارم

<form method="get" class="row">

<input type="search" name="SearchTerm" />
<input type="submit" value="جستجو" class="btn btn-primary" />
</form>
خوب فقط کافیه تو متد Index هم اینجوری بنویسی
public ActionResult Index(string SearchTerm = null)
{
var Dates = db.Dates.Where(x=> SearchTerm ==null || x.DateName == SearchTerm)
return View(Dates.ToList());
}
البته تو یآموزشهای ماکروسافت بود به نظرم میتونی خودت گسترشش بدی
فقط یادت باشه نام Input با نام رشته ای که توی Inedx میدی یکی باشه

amir_arsalan_k2
پنج شنبه 26 تیر 1393, 21:57 عصر
ممنون از راهنمایی ... اما این متد که فقط داره تکس باکس (SearchTerm ) به عنوان ورودی سرچ تو دیتا هام میگرده ... تکلیف بقیه چیه ؟ مثلا اگه آگهی فوری اضافه بشه یا استان چی ؟