背景
在 SQL Server 2008 中,我在名为boats 的表上的名为boatType 的列上使用了全文索引。
boatType 字段包含一个以逗号分隔的船所属的boatType 列表。例如“多体船、三体船、巡洋舰”。
执行搜索的我的 SQL 查询使用 CONTAINS 谓词,如下所示:
包含(boatType,'“多体”')
问题
一切正常,直到最近我注意到没有返回特定行,但是,返回了具有完全相同数据的其他行。
短期解决方案
我尝试通过从boatType 列中删除全文索引来重建索引,然后重新添加它。我等待索引重新填充并解决了问题,即返回了所有预期的行。
什么是长期解决方案?
好的,所以问题在短期内得到了解决,但如果这种情况发生一次,它可能会再次发生。
我假设(可能是错误的)全文索引上的“更改跟踪 = 自动”设置意味着对数据的任何更新都会导致索引的自动更新。
我没有设置任何人口计划,因为我假设如果我使用“更改跟踪 = 自动”,我不需要这样做。再说一次,也许我错了。
为了支持我上面的假设,添加到数据库或更改的新数据似乎确实触发了索引的更新,因为应该出现在搜索中的大多数行确实出现了。这只是少数。
在这里做的最好的事情是什么?