我試圖在我的ASP.NET MVC實現完整的搜索功能(C#,LINQ到SQL)的網站。搜索數據庫 - ASP.NET MVC C#
該網站由大約3-4個桌子有大約1-2列,我想搜索。
這是我到目前爲止有:
public List<SearchResult> Search(string Keywords)
{
string[] split = Keywords.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
List<SearchResult> ret = new List<SearchResult>();
foreach (string s in split)
{
IEnumerable<BlogPost> results = db.BlogPosts.Where(x => x.Text.Contains(s) || x.Title.Contains(s));
foreach (BlogPost p in results)
{
if (ret.Exists(x => x.PostID == p.PostID))
continue;
ret.Add(new SearchResult
{
PostTitle= p.Title,
BlogPostID = p.BlogPostID,
Text=p.Text
});
}
}
return ret;
}
正如你所看到的,我的關鍵字和運行在一個表內的foreach一個foreach(我會重複爲每個表)。
這似乎inefficent,我想知道,如果那裏有一個更好的方式來創建數據庫的搜索方法。
而且,我能做些什麼,以列在數據庫中,使他們能夠被搜索得更快?我讀了一些關於編制索引的內容,這只是我在SQL Management Studio中看到的「全文索引」True/False字段嗎?