延迟在SQL Server中使用全文搜索

时间:2011-07-14 12:42:43

标签: sql sql-server sql-server-2005 tsql full-text-search

我决定使用LIKE '%' + @searchTerm + '%'更改搜索以使用FULLTEXT索引。我正在使用SQL Server 2005。

我已经创建了一个目录,如下:

CREATE FULLTEXT CATALOG CatalogName AS DEFAULT

我已经创建了索引,如下所示:

CREATE FULLTEXT INDEX ON Table (col1, col2) KEY INDEX TablePK WITH CHANGE_TRACKING AUTO

然后我就这样使用它:

SELECT col1, col2
FROM Table t
    INNER JOIN FREETEXTTABLE(Table, *, @SearchTerm) s ON s.[Key] = t.Id
ORDER BY s.[Rank] DESC

它会返回正确的结果,但如果它没有运行一段时间,则需要大约30秒才能运行搜索。运行一次后,所有进一步的搜索都是即时的。如果我不管它并在一小时后回来,第一次搜索再次变慢。即使表格在此期间未更新,似乎也会发生这种情况。

我在完全不同的服务器上的两个完全不同的数据库上尝试了这个,行为是一样的。在其中一个数据库中,被索引的表非常小(50行),而另一个则更大(1000行)。

任何人都可以帮我解决问题是什么以及如何解决问题?我唯一的选择是完全放弃FULLTEXT,或者每隔n分钟提供一次服务来运行搜索查询!

3 个答案:

答案 0 :(得分:6)

默认情况下,SQL Server会在一段时间不活动(300秒,AFAIR)后卸载断字符。

重新加载它需要检查需要向证书颁发者发送Internet请求的签名。

请在开发服务器上运行:

EXEC    sp_fulltext_service
                @action = 'verify_signature',
                @value = 0

看看它是否有帮助。

<强>更新

http://support.microsoft.com/kb/915850/en-us

答案 1 :(得分:0)

也许您的数据库设置为自动关闭。

答案 2 :(得分:0)

服务器是否很忙或有足够的内存?我不太了解全文搜索的工作原理,但如果服务器上有很多活动,它可能会将事情刷新到磁盘上。