V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
galaxyz
V2EX  ›  问与答

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

  •  
  •   galaxyz · 2018-10-31 23:49:59 +08:00 via Android · 1337 次点击
    这是一个创建于 2207 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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*') 。修改后有所改善,但是仍然有卡顿感,离流畅还有差距。

    有什么更好的办法吗?

    注:

    4 条回复    2018-11-01 08:19:15 +08:00
    ysc3839
        1
    ysc3839  
       2018-11-01 00:28:09 +08:00
    ddup
        2
    ddup  
       2018-11-01 07:42:15 +08:00 via Android
    SQLite fts 可以了解一下,我的这个本地数据全文搜索引擎用了几十万数据都很快,https://bbs.guihaidata.com/d/1
    再不行就弃 SQLite 上 Lucene
    galaxyz
        3
    galaxyz  
    OP
       2018-11-01 08:18:50 +08:00 via Android
    @ysc3839 rime 的几个版本我都看过,好像主要是拼音没有笔画类的,检索需求不同
    galaxyz
        4
    galaxyz  
    OP
       2018-11-01 08:19:15 +08:00 via Android
    @ddup 谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2484 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:54 · PVG 23:54 · LAX 07:54 · JFK 10:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.