SQLite,文本搜索FTS等

时间:2016-04-23 22:15:42

标签: sqlite delphi delphi-5 fts3 fts4

我正在使用SQLite3对一些旧的D5业务(朋友的免费赠品)进行一些更新和修复,因此必须使用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扩展程序的代码或比上述更快的内容吗?

我发现了这个,但由于在这里定义的原因太多,无法让它工作。我相信它的工作原理是ŽarkoGajić的东西总是现货,但只是没有工作这个装置。 :) http://zarko-gajic.iz.hr/full-text-txt- ... g-project /

在这里找到这个链接...... Does BLOB data types in SQLite supports FULL-text search?

这可以解释为什么似乎没有任何效果,BLOB_TEXT被忽略了?是?否?

任何加速此文本搜索的片段?

1 个答案:

答案 0 :(得分:0)

为什么不在类/方法上创建索引?它可以是表达式索引:https://www.sqlite.org/expridx.html甚至是复杂的索引。我将从小写开始,然后在需要区分大小写的情况下重新过滤。