что имеется в виду под полнотекстовым поиском? аналога специализированного индекса в MySql в ib нет, т.е. в блобах поиск можно организовать только через хранимую процедуру, которая будет просматривать все записи и возвращать нужные. синтаксис sql достаточно примитивный, так что скорее всего для самого поиска придётся использовать UDF.
но есть возможность искать в строковых полях. размер строковых полей может быть достаточно внушительным - до 32 тыс. знаков для однобайтовых кодировок. при использовании мультибайтовых кодировок, типа unicode, маскимальный размер определяется как частное от 32767 на кол-во байтов (например, для UNICODE_FSS, 3 байта на символ, максимальный размер равен 10922). короче, обычные строковые поля ib в большинстве случаев способны благополучно заменить блобы, и вот в них-то и можно организовать поиск стандартными средствами sql-запроса.
средств этих несколько.
1. строгое равенство
select *
from table
where s = 'asd';
вернёт все записи, где поле s = 'asd'.
2. равенство начальных символов
select *
from table
where s starting with 'asd';
вернёт всё записи, где поле s начинается с 'asd'.
3. проверка вхождения
select *
from table
where s like '%asd%';
вернёт всё записи, где поле s содержит 'asd'.
этот вариант самый мощный из всех и благополучно заменяет все прочие. знак процента, фактически, определяет маску:
'%asd' - вернёт записи, начинающиейся с asd
'asd%' - вернёт записи, заканчивающиеся на asd
'%asd%' - вернёт все записи, содержащие asd.
если необходимо осуществлять поиск без учёта регистра, для всех трёх вариантов можно использовать стандартную функцию UPPER. например,
select *
from table
where UPPER )s: like '%ASD%';
вернёт всё записи, где поле s содержит 'asd' без учёта регистра.
только при этом не надо забывать и сам текст тоже писать в верхнем регистре, иначе запрос
никогда не вернёт ни одного значения
я на это как-то поймался, полдня не мог понять что происходит, потом ещё полдня матерился, когда дошло.