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 или даже сложный. Я бы начал с нижнего регистра, а затем заново отфильтровал, если нужна чувствительность к регистру.

Другие вопросы по тегам