Sqlite 怎么快速查询码表的问题(安卓)

2018-10-31 23:49:59 +08:00
 galaxyz

Sqlite 怎么快速查询码表的问题

本人开发一个笔画类输入法,有一个问题困扰很久,在安卓上打词汇很卡。中文词汇的 Sqlite 笔画码表是这样的:

wordtable word stroke 输入法 1521341251122<1>34<2>44112154 注:<1>表示分隔符

用过笔画的同学都知道,打词时每个字打前几笔就行了,因此要打「输入法」只要打「 152'3'441 」就应该匹配到「输入法」了,Sqlite 查询语句是:select word from wordtable where stroke glob '152*<1>3*<2>441*',但这样很卡(词库很大,只匹配到 4 个词),主要原因是检索式耗费资源,为此使用 in 语句缩小查询范围,改为:select word from wordtable where stroke glob '152*<1>3*<2>441*' and stroke in (select stroke from wordtable where stroke glob '152*') 。修改后有所改善,但是仍然有卡顿感,离流畅还有差距。

有什么更好的办法吗?

注:

1368 次点击
所在节点    问与答
4 条回复
ysc3839
2018-11-01 00:28:09 +08:00
ddup
2018-11-01 07:42:15 +08:00
SQLite fts 可以了解一下,我的这个本地数据全文搜索引擎用了几十万数据都很快,https://bbs.guihaidata.com/d/1
再不行就弃 SQLite 上 Lucene
galaxyz
2018-11-01 08:18:50 +08:00
@ysc3839 rime 的几个版本我都看过,好像主要是拼音没有笔画类的,检索需求不同
galaxyz
2018-11-01 08:19:15 +08:00
@ddup 谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/503216

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX