2

我有一个包含 4000 万条记录的表的 SQL Server 2005 数据库。每条记录都包含一列,该列存储以逗号分隔的关键字列表。每个关键字都是字母和数字的组合。关键字最长为 7 个字符,平均每条记录有 15 个关键字。关键字在行间不是唯一的。

我想搜索全部或部分关键字。

我创建了全文索引,显示 328,245,708 个唯一键计数。对于 4 个或更多字符的查询(在测试机上大约100ms ),搜索效率很好,但对于具有 3 个或更少字符的查询(在测试机上最多3s)来说太慢了。

我一直在尝试具有相似结果的排序CONTAINSTABLE和查询。CONTAINS'[query]*'

我相信短查询的性能更慢,因为短词更频繁地在不同的记录中重复。

对结果进行排序并不重要,我一直在尝试返回TOP X按 Rank from 排序的结果CONTAINSTABLE。这不能提供所需的性能。

对于短查询,我怎样才能使这个搜索更快?

4

2 回答 2

3

另一种选择是考虑规范化表结构,以便将数据记录放在一个表中,将标签放在另一个表中,并使用关联表将标签与数据记录相关联。这将允许您针对标签执行文本搜索并简单地加入关联表以检索相关记录。

于 2012-11-06T14:58:45.997 回答
1

您可能希望将其连接到SOLRSphinx之类的东西,并让专用的文本搜索引擎处理搜索功能。

于 2012-11-06T14:55:08.417 回答