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分钟提供一次服务来运行搜索查询!
默认情况下,SQL Server在一段不活动时间(300秒AFAIR)后卸载断字符.
重新加载它需要检查需要向证书颁发者发送Internet请求的签名.
请在开发服务器上运行:
EXEC sp_fulltext_service
@action = 'verify_signature',
@value = 0
Run Code Online (Sandbox Code Playgroud)
并看看它是否有帮助.
更新:
http://support.microsoft.com/kb/915850/en-us