SQLite, текстовый поиск FTS и т. Д.
Я делаю некоторые обновления и исправления некоторых старых бизнес-вещей D5 (халява для друга) с SQLite3, поэтому я должен использовать Zeos 6.6
Я хотел бы ускорить текстовый поиск, который в настоящее время использует два поля BLOB_TEXT, "Класс" и "Методы"
if not(cbSearchMatchCase.Checked) then
SearchText:=UpperCase(SearchText);
while not(dm.tbl.EOF) do
begin
SearchData:=dm.tbl.FieldByName(fldClass).AsString+' '+
dm.tbl.FieldByName(fldMethods).AsString;
if not(cbSearchMatchCase.Checked) then
SearchData:=UpperCase(SearchData);
MatchFound:=AnsiPos(SearchText,SearchData) > 0;
dm.tbl.Edit;
dm.tbl.FieldByName(fldSearch).AsBoolean:=MatchFound;
dm.tbl.Post;
pbMain.StepIt;
dm.tbl.Next;
end;
Может кто-нибудь указать мне код для использования расширения SQLite FTS или что-то быстрее, чем выше?
Я нашел это, но не могу заставить его работать по слишком многим причинам, чтобы определить здесь. Я уверен, что это работает, потому что Жарко Гайич всегда работает на месте, но просто не работает с этой установкой.:) http://zarko-gajic.iz.hr/full-text-txt-... g-project /
Просто найдите эту ссылку здесь... Поддерживает ли BLOB-тип данных в SQLite полнотекстовый поиск?
Это может объяснить, почему ничего не работает. BLOB_TEXT игнорируется? Да? Нет?
Какие-нибудь фрагменты, чтобы ускорить этот текстовый поиск?
1 ответ
Почему бы не создать индекс по классу / методу? Это может быть индекс выражения: https://www.sqlite.org/expridx.html или даже сложный. Я бы начал с нижнего регистра, а затем заново отфильтровал, если нужна чувствительность к регистру.