我试图在我的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字段吗?