相关疑难解决方法(0)

SQLite:大表中的高效子字符串搜索

我正在开发一个Android应用程序,它必须在一个大表中执行子字符串搜索(大约500'000个带有街道和位置名称的条目,所以每个条目只有几个单词).

CREATE TABLE Elements (elementID INTEGER, type INTEGER, name TEXT, data BLOB)
Run Code Online (Sandbox Code Playgroud)

请注意,只有20%的条目包含"name"列中的字符串.

执行以下查询几乎需要2分钟:

SELECT elementID, name FROM Elements WHERE name LIKE %foo%
Run Code Online (Sandbox Code Playgroud)

我现在尝试使用FTS3来加速查询.这非常成功,查询时间减少到1分钟(令人惊讶的是,数据库文件大小仅增加了5%,这对我的目的来说也相当不错).

问题是,FTS3似乎不支持子串搜索,即如果我想在"foo bar"和"foobar"中找到"bar",我只会得到"foo bar",尽管我需要两个结果.

所以实际上我有两个问题:

  1. 是否有可能进一步加快查询速度?我的目标是查询30秒,但我不知道这是否真实......

  2. 如何使用FTS3进行真正的子串搜索?

sqlite android fts3

9
推荐指数
1
解决办法
6505
查看次数

使用JSON1的Ubuntu 16.04上的SQLite

是否存在使用JSON1扩展编译的Linux/Ubuntu的SQLite发行版.SQLite JSON1页面上的说明只解释了如何在编译后加载扩展 - 我想避免的题外话.

sqlite sqlite-json1

1
推荐指数
1
解决办法
536
查看次数

标签 统计

sqlite ×2

android ×1

fts3 ×1

sqlite-json1 ×1