4

我的经理说,在基础表数据更改后,可能需要一段时间才能更新全文搜索索引。

例如,如果我有一个Products包含列的表Description并且我更新了该描述,那么我可能需要一些时间才能搜索该新描述。真的吗?这需要多长时间?这在 SQL 2008 中有所改进吗?

如果用户修改了描述,我们要求后续搜索应该搜索修改后的数据,而不是更改之前的陈旧数据。

实现此目的的正确/推荐代码模式是什么?我们是否应该等待索引表明它已经完成?如果是这样,关于何时完成索引更新做出什么保证,例如,它是否可以在繁忙的系统中延迟几分钟(推回某个队列,而不是优先于到达数据库的其他命令进行处理)。

4

2 回答 2

0

每次插入任何值时,在任何表上创建的全文索引都会更新,如果表未更新而不是全文索引不会重建

于 2012-06-06T08:58:09.353 回答
0

如果您进行大量插入或更新,它们可能会触发 FTI 更新的长时间延迟。这是一些延迟代码直到 FTI 目录状态空闲的代码:

DECLARE @CatalogName VARCHAR(MAX)
SET  @CatalogName = 'Your FTI catalog name'
DECLARE @status int
SET @status = 1 --non-idle FTI see below
WHILE @status > 0 --HERE WE LOOP UNTIL FTI STATUS IS IDLE
begin
    SELECT
    @status = FULLTEXTCATALOGPROPERTY(@CatalogName,'PopulateStatus')
    FROM sys.fulltext_catalogs AS cat
    BEGIN
        waitfor  delay '00:00:05';
        PRINT @status
   END

结尾

作为参考,另请参阅此线程:我如何知道 SQL 全文索引填充何时完成?

于 2014-10-23T17:33:14.967 回答