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

Dav*_*vid 2 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;}
}
Run Code Online (Sandbox Code Playgroud)

然后创建一个该对象的List,例如List遍历所有30,000条记录,填充List,找出匹配最多次的那些并返回前10个使用像

 if Description.contains(keyword1);
Run Code Online (Sandbox Code Playgroud)

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

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

iam*_*ael 5

您应该使用全文索引解决方案.MS SQL Server 7及更高版本内置了全文索引引擎(这是一篇不错的概述文章).您还可以考虑使用Lucene等外部产品(适用于JavaC#/ .NET).