搜索30,000条SQL记录的方法

时间:2009-10-20 20:35:24

标签: sql sql-server

我即将在我的网站上创建一个简单的搜索工具,用户将在其中输入大约2-4个关键字,这些关键字将在我的MS SQL数据库的表中的两列中进行搜索。一列是名为title的varchar(50),一列是名为description的varchar(2500)。任何时候都有大约20,000-30,000条记录可供搜索。

关键字需要返回“最佳匹配” - 您知道在ebay等搜索页面上获得的返回最匹配的匹配项。我想这样做的方式似乎有些天真 - 我以为我可以读取表中的所有30,000条记录并且像这样对象:

public class SearchableObject
{
    string Title {get; set;}
    string Description {get; set;}
    int MatchedWords {get; set;}
}

然后创建该对象的List,例如List遍历所有30,000条记录,填充List,找出匹配最多次的那些并使用类似

返回前10
 if Description.contains(keyword1);

然后找出填充MatchedWords字段的字符串中出现的次数。

我的问题是,这是最好的方法吗?如果没有,会是什么?

6 个答案:

答案 0 :(得分:8)

全文索引搜索将起到作用。

http://msdn.microsoft.com/en-us/library/ms142547.aspx

答案 1 :(得分:5)

您应该使用全文索引解决方案。 MS SQL Server 7及更高版本内置了full text indexing enginehere's a decent overview article)。您还可以考虑使用Lucene等外部产品(适用于JavaC#/.NET)。

答案 2 :(得分:2)

我认为您只想使用C#来解析搜索参数,而不是实际执行搜索和聚合...所以不,这不是最好的方式。使用SQL Server进行搜索繁重。

答案 3 :(得分:1)

看看.net的lucene,它将允许你的文本的完整索引。

http://incubator.apache.org/lucene.net/

此网站上的.net开发人员可能会告诉您是否有更好的替代方案

答案 4 :(得分:1)

如果您使用的是Java或C#,我建议分别推荐LuceneLucene.NET

答案 5 :(得分:1)

使用全文搜索引擎,例如Lucene。还存在.NET version