2010-11-18 39 views
0

我在我的數據庫中有一個字段,其中包含一個word文檔。這存儲在varBinary(max)字段中。SQL全文搜索不索引二進制字段

我使用全文搜索來搜索此字段中的文本。因此,我創建了一個字段'Extension',每個記錄在Extension字段中包含'.doc'。我已將更改跟蹤設置爲自動。

一切正常,直到我創建一個新的記錄。當我創建一條新記錄並搜索一條僅放入新記錄的單詞時,FTS將找不到任何內容。但是,當我這樣做:

UPDATE table SET Extension = '.doc'

的FTS發現我的新紀錄!這怎麼可能?我錯過了什麼?

因此,當我對記錄執行更新時,記錄會被重新索引?

+1

您是否嘗試過給它一些時間?如果索引是在後臺完成的,那麼在添加記錄後可能不會立即可用。 – Guffa 2010-11-18 13:23:12

+0

是的,我已經做到了。但是,當我使用唯一字更新現有記錄並搜索此字時,我直接得到結果 – Martijn 2010-11-18 13:32:44

+0

您可以在查詢中找到某些給定文本在二進制列中搜索的解釋嗎? – FlipMcF 2012-01-11 19:30:29

回答

0

對不起,但也許問題是,你不能全文索引二進制/ Varbinary列,所以你可能會得到一些未定義的行爲。

從[5.1]手冊:

全文索引只能與MyISAM表被使用,並且可以是僅針對CHAR,VARCHAR,或TEXT列創建 。

http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

雖然我沒有「嘗試」它自己確認並重新創建您的具體情況,其中列索引似乎

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