我有一张表,我在上面创建了全文目录。该表只有 6000 多行。我在索引中添加了两列。第一个可以被认为是唯一的排序标识符,第二个可以被认为是该项目的内容(我的表中还有 11 个其他列不属于全文目录)。这是几行的示例:
TABLE: data_variables
ROW unique_id label
1 A100d1 Personal preference of online shopping sites
2 A100d2 Shopping behaviors for adults in household
在前端的 Web 应用程序中,我有一个文本框,用户可以输入该文本框以获取与他们在UNIQUE ID
orLABEL
列中搜索的任何术语匹配的项目列表。因此,例如,如果用户输入sho
或a100
然后将使用上述两行填充列表。如果他们输入,behav
则列表将仅填充上面的第 2 行。
这是通过对每个keyup
. PHP 调用 SQL 服务器上的存储过程,如下所示:
SELECT TOP 50 dv.id, dv.id + ': ' + dv.label,
dv.type_id, dv.grouping, dv.friendly_label
FROM data_variables dv
WHERE (CONTAINS((dv.unique_id, dv.label), @search))
(@search
是传递给存储过程的用户文本。)
我注意到这变得非常缓慢,尤其是当我没有TOP 50
在查询中使用时。
我正在寻找的是一种直接在 SQL Server 上或通过放弃全文索引的想法并使用 jQuery 来搜索客户端上的可搜索项数组来加快速度的方法。我已经研究了一些 jQuery AutoComplete 的东西和其他一些用于 AutoComplete 的 jQuery 插件,但还没有尝试模拟任何东西。那将是我的下一步,但我想先在这里查看一下我会得到什么建议。
提前致谢。