SQL全文搜索不是索引二进制字段

时间:2010-11-18 13:15:01

标签: sql full-text-search

我的数据库中有一个包含word文档的字段。它存储在varBinary(max)字段中。

我使用全文搜索在此字段中搜索文本。因此,我创建了一个字段'Extension',并且每个记录在Extension字段中都包含'.doc'。我已将更改跟踪设置为自动。

一切正常,直到我创建新记录。当我创建一个新记录并且我搜索只被放入新记录的单词时,FTS什么也找不到。但是,当我这样做时:

UPDATE table SET Extension = '.doc'

FTS找到了我的新唱片!这怎么可能?我错过了什么?

那么,当我对记录执行更新时,记录会被重新编入索引吗?

2 个答案:

答案 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

虽然我自己没有'试过'来确认并重新创建您的确切情况,其中列似乎已编入索引