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

Pau*_*aul 7 sql t-sql sql-server full-text-search sql-server-2005

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

我创建了一个目录,如下所示:

CREATE FULLTEXT CATALOG CatalogName AS DEFAULT
Run Code Online (Sandbox Code Playgroud)

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

CREATE FULLTEXT INDEX ON Table (col1, col2) KEY INDEX TablePK WITH CHANGE_TRACKING AUTO
Run Code Online (Sandbox Code Playgroud)

然后我像这样使用它:

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

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

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

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

Qua*_*noi 6

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

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

请在开发服务器上运行:

EXEC    sp_fulltext_service
                @action = 'verify_signature',
                @value = 0
Run Code Online (Sandbox Code Playgroud)

并看看它是否有帮助.

更新:

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