我的数据库中有一个包含word文档的字段。它存储在varBinary(max)字段中。
我使用全文搜索在此字段中搜索文本。因此,我创建了一个字段'Extension',并且每个记录在Extension字段中都包含'.doc'。我已将更改跟踪设置为自动。
一切正常,直到我创建新记录。当我创建一个新记录并且我搜索只被放入新记录的单词时,FTS什么也找不到。但是,当我这样做时:
UPDATE table SET Extension = '.doc'
那么,当我对记录执行更新时,记录会被重新编入索引吗?
答案 0 :(得分:1)
我遇到了这个问题。似乎是因为在表中已有数据后创建了目录并启用了全文,因此原始数据的全文目录永远不会更新。以下用于解决现有数据的问题,但可能有一个更简单的方法:
ALTER FULLTEXT INDEX ON table SET CHANGE_TRACKING OFF; -- turn auto off
ALTER FULLTEXT INDEX ON table STOP POPULATION; -- stop anything in progress
ALTER FULLTEXT INDEX ON table START FULL POPULATION; -- do a full population
ALTER FULLTEXT INDEX ON table SET CHANGE_TRACKING AUTO; -- auto back on
答案 1 :(得分:0)
很抱歉,但问题可能是您无法对二进制/ Varbinary列进行全文索引,因此您可能会遇到一些未定义的行为。
从[5.1]手册:
全文索引只能与MyISAM表一起使用,也可以 仅为CHAR,VARCHAR或TEXT列创建。
http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html
虽然我自己没有'试过'来确认并重新创建您的确切情况,其中列似乎已编入索引