【发布时间】:2009-10-03 06:34:37
【问题描述】:
我正在尝试在我的 ASP.NET MVC(C#、Linq-to-Sql)网站中实现完整的搜索功能。
该站点由大约 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(我会为每个表格重复它)。
这似乎效率低下,我想知道是否有更好的方法来为数据库创建搜索方法。
另外,我可以对数据库中的列做些什么,以便更快地搜索它们?我读过一些关于索引它们的东西,这只是我在 SQL Management Studio 中看到的“全文索引”True/False 字段吗?
【问题讨论】:
标签: asp.net-mvc database search