我有一个SQL Server2005数据库,其中的表包含4000万条记录。每个记录包含一列,该列存储用逗号分隔的关键字列表。每个关键字都是字母和数字的组合。关键字最长为7个字符,平均每条记录有15个关键字。关键字在各行之间不是唯一的。
我想搜索全部或部分关键字。
我创建了全文索引,其中显示了328,245,708个唯一键数。搜索效率对于4个或更多字符的查询(在测试机上大约 100毫秒 )来说很好,但是对于3个或更少字符的查询(在测试机上最多 3s )来说太慢了。
我一直在尝试CONTAINSTABLE和具有类似结果的CONTAINS查询'[query]*'。
CONTAINSTABLE
CONTAINS
'[query]*'
我认为简短查询的性能会较慢,因为简短单词在不同记录之间的重复频率更高。
对结果进行排序不是至关重要的,我一直在尝试返回TOP X从中排序为Rank的结果CONTAINSTABLE。这不能提供理想的性能。
TOP X
对于简短查询,如何使此搜索更快?
您可能希望将其连接到SOLR或Sphinx之类的东西,并让专用的文本搜索引擎处理搜索功能。