Полнотекстовый поиск SQL не индексирует двоичное поле - PullRequest
0 голосов
/ 18 ноября 2010

В моей базе данных есть поле, содержащее текстовый документ.Это хранится в поле varBinary (max).

Я использую полнотекстовый поиск для поиска текста в этом поле.Поэтому я создал поле «Расширение», и каждая запись содержит «.doc» в поле «Расширение».Я установил автоматическое отслеживание изменений.

Все работает нормально, пока я не создам новую запись.Когда я создаю новую запись и ищу слово, которое было добавлено только в новую запись, FTS ничего не находит.Но когда я делаю это:

UPDATE table SET Extension = '.doc'

, ФСТ находит мою новую запись!Как это возможно?Чего мне не хватает?

Итак, когда я выполняю обновление записей, записи реиндексируются?

Ответы [ 2 ]

1 голос
/ 23 апреля 2012

У меня была именно эта проблема.Кажется, это произошло потому, что каталог был создан и полнотекстовый включен после того, как в таблице уже есть данные, поэтому полнотекстовый каталог никогда не обновляется для исходных данных.Следующее служит для решения проблемы с моими существующими данными, однако, возможно, существует более простой метод:

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
0 голосов
/ 11 января 2012

Извините, но, возможно, проблема в том, что вы не можете выполнить полнотекстовый индекс для двоичного / Varbinary столбца, поэтому вы можете получить какое-то неопределенное поведение.

Из руководства [5.1]:

Полнотекстовые индексы могут использоваться только с таблицами MyISAM и могут быть создается только для столбцов CHAR, VARCHAR или TEXT.

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

Хотя я сам не «пробовал» это подтвердить и воссоздать вашу точную ситуацию, где столбец кажется проиндексированным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...