# 新app得推倒重来了

**URL:** <https://forum.freemdict.com/t/topic/37083>\
**Category:** 闲聊吹水\
**Created:** [2025 年3 月 6 日 08:01 UTC](https://forum.freemdict.com/t/topic/37083 "2025-03-06T08:01:29Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

作者： ![midzuki\_yuka](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/midzuki_yuka/32/83965_2.png) [@midzuki\_yuka](https://forum.freemdict.com/u/midzuki_yuka)\
发布日期： [2025 年3 月 6 日 11:59 UTC](https://forum.freemdict.com/t/topic/37083/22 "2025-03-06T11:59:56Z")

</div>

Chou先生好。  
加密可以说全是我的锅，当时外传数据给某洋群友了，谁知道他拿去做种…

---

<div class="post-metadata">

作者： ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
发布日期： [2025 年3 月 6 日 12:07 UTC](https://forum.freemdict.com/t/topic/37083/23 "2025-03-06T12:07:40Z")

</div>

对的，为了性能考虑压缩和复杂加密是使不得的，低压缩率和异或混淆勉强可取，用来防止数据流出。打开一看就是明文的话，app都不好卖了。

---

<div class="post-metadata">

作者： ![last\_idol](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/last_idol/32/2205_2.png) [@last\_idol](https://forum.freemdict.com/u/last_idol)\
发布日期： [2025 年3 月 6 日 12:41 UTC](https://forum.freemdict.com/t/topic/37083/24 "2025-03-06T12:41:11Z")

</div>

自己设计格式当然更好，sqlite 的复杂查询、事务、触发器对词典格式来说都略显繁重，每次查询开销在哪里自己设计的话都一清二楚。

词头的索引最简单就是参考 mdx 的方式把词头分块压缩存储，直接用二分查找就可以了，速度同样很快，slob 就是这个方案；也可以构建 b 树、sstable、fst 等索引结构内嵌到格式中，这些都有开源方案可以参考，goldendict 的索引就是用的 b 树，mdx 的实现方式其实和 sstable 差不多，只是 sstable 更精巧一些。

全文检索的索引复用词头的就可以了，比较困难的是分词，因为分词的结果需要写入到格式中，如果后续改了分词的结果，前后版本的格式就有兼容的问题，slob 虽然不支持全文检索但也有类似的问题。

自己设计格式，需要索引哪些数据，怎么样把这些数据整合到同一个格式中，怎么样在词典软件中展现这些数据，需要权衡的细节会比较多，可能会不断的推倒重来，sqlite 的表结构在早期设计的时候会更方便。

---

<div class="post-metadata">

作者： ![First\_Last](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/first_last/32/5_2.png) [@First\_Last](https://forum.freemdict.com/u/First_Last)\
发布日期： [2025 年3 月 6 日 13:16 UTC](https://forum.freemdict.com/t/topic/37083/25 "2025-03-06T13:16:53Z")

</div>

問一下，OLex 英和和英 是不是也是加密所以才沒下聞？

---

<div class="post-metadata">

作者： ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
发布日期： [2025 年3 月 6 日 14:04 UTC](https://forum.freemdict.com/t/topic/37083/26 "2025-03-06T14:04:36Z")

</div>

olex3电子版之前还没有，刚刚看了下，四天前才出来。你说olex2，没人做所以没有，站内的monokakido不都是fince和notwind在做吗，别人要么不会，要么懒得做。

> 2025年3月2日  
> ・「オーレックス英和辞典 第3版」をリリースしました。

---

<div class="post-metadata">

作者： ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
发布日期： [2025 年3 月 6 日 15:10 UTC](https://forum.freemdict.com/t/topic/37083/27 "2025-03-06T15:10:16Z")

</div>

olexje2 keystore格式魔数不一样，好像得分开讨论。

---

<div class="post-metadata">

作者： ![midzuki\_yuka](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/midzuki_yuka/32/83965_2.png) [@midzuki\_yuka](https://forum.freemdict.com/u/midzuki_yuka)\
发布日期： [2025 年3 月 6 日 16:54 UTC](https://forum.freemdict.com/t/topic/37083/28 "2025-03-06T16:54:55Z")

</div>

嗯。不过我现在对这个问题不太上心了，知道个大概的结构就行，反正也是为了仿制新格式。

---

<div class="post-metadata">

作者： ![hua](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/hua/32/11090_2.png) [@hua](https://forum.freemdict.com/u/hua)\
发布日期： [2025 年3 月 7 日 01:50 UTC](https://forum.freemdict.com/t/topic/37083/29 "2025-03-07T01:50:05Z")

</div>

我怀疑有多少程序摸到了 SQLite 的瓶颈。。

---

<div class="post-metadata">

作者： ![MeigenChou](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/meigenchou/32/90024_2.png) [@MeigenChou](https://forum.freemdict.com/u/MeigenChou)\
发布日期： [2025 年3 月 7 日 02:16 UTC](https://forum.freemdict.com/t/topic/37083/30 "2025-03-07T02:16:16Z")

</div>

> [@amob](#):
>
> java效率

早期java可能确实性能不够，但现在5202年了…java编译器和虚拟机早就优化了多少个数量级，哪怕写纯java代码在运行时底层还是会涉及到部分native代码的。有些特定程序java版跑起来甚至比C语言版还快（两者都没有优化的情况下）。况且正经安卓程序员有多少会NDK开发的…也不多。总不能要求每个人既要会java又要会C吧…

---

<div class="post-metadata">

作者： ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
发布日期： [2025 年3 月 7 日 02:54 UTC](https://forum.freemdict.com/t/topic/37083/31 "2025-03-07T02:54:15Z")

</div>

嗯，主要是我看到十几家安卓词典app都把词典的读取逻辑写在native库里，我猜测是性能需求，如果是使坏的话就是防逆向。

---

<div class="post-metadata">

作者： ![last\_idol](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/last_idol/32/2205_2.png) [@last\_idol](https://forum.freemdict.com/u/last_idol)\
发布日期： [2025 年3 月 7 日 05:35 UTC](https://forum.freemdict.com/t/topic/37083/32 "2025-03-07T05:35:43Z")

</div>

我也觉得物书堂不需要一次性提取几十万词头，不过这个软件就这么设计的。

虽然 sqlite 的上下限都很高，但毕竟不是专门设计的词典格式，有些可以优化的地方比较隐晦，比如 sqlite 的词头如果按顺序写入读取的时候可以接近磁盘的速度，如果随机写入又要按顺序读取，速度可能会下降 10 倍不止。

---

<div class="post-metadata">

作者： ![MeigenChou](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/meigenchou/32/90024_2.png) [@MeigenChou](https://forum.freemdict.com/u/MeigenChou)\
发布日期： [2025 年3 月 7 日 06:41 UTC](https://forum.freemdict.com/t/topic/37083/33 "2025-03-07T06:41:49Z")

</div>

> [@amob](#):
>
> 性能需求

除了游戏、视频解码等少数场合，一般的APP如果有性能需求那就是伪需求。无非就是防破解，他们需要把key写进native库里…

> [@last\_idol](#):
>
> 跨平台

靠近底层的语言[C/C++]可跨不了平台噢。java表示这活害得我来干

> macos、iOS肯定不行，它们的动态库格式是.dylib（Mach-O object file），和Linux .so（ELF格式）不是一回事。

---

<div class="post-metadata">

作者： ![last\_idol](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/last_idol/32/2205_2.png) [@last\_idol](https://forum.freemdict.com/u/last_idol)\
发布日期： [2025 年3 月 7 日 07:11 UTC](https://forum.freemdict.com/t/topic/37083/34 "2025-03-07T07:11:04Z")

</div>

还可能有跨平台的原因，不需要再写多套代码了。

---

<div class="post-metadata">

作者： ![last\_idol](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/last_idol/32/2205_2.png) [@last\_idol](https://forum.freemdict.com/u/last_idol)\
发布日期： [2025 年3 月 7 日 13:07 UTC](https://forum.freemdict.com/t/topic/37083/35 "2025-03-07T13:07:33Z")

</div>

只是 abi 不兼容，跨平台重新编译下就行了。

---

<div class="post-metadata">

作者： ![amob](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/amob/32/14630_2.png) [@amob](https://forum.freemdict.com/u/amob)\
发布日期： [2025 年6 月 10 日 15:49 UTC](https://forum.freemdict.com/t/topic/37083/36 "2025-06-10T15:49:23Z")

</div>

olex3的mono丶kakido版要来了，不过都有人做mdx版了。我希望上架的倒是旺文社古語辞典第10版，目前是sharp的brain+独占（学校授权）。

 ![Screenshot_2025-06-10-23-42-44-422_com.twitter.android-edit](https://forumcdn.freemdict.com/uploads/default/original/3X/a/e/aed2cf281a1237f4d2ac6ff2771ed61a68ce110c.jpeg)

---

<div class="post-metadata">

作者： ![mdict6](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/m/8491ac/32.png) [@mdict6](https://forum.freemdict.com/u/mdict6)\
发布日期： [2025 年6 月 14 日 09:08 UTC](https://forum.freemdict.com/t/topic/37083/37 "2025-06-14T09:08:29Z")

</div>

是iOS词典壳阅读器吗

---

<div class="post-metadata">

作者： ![MeigenChou](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/meigenchou/32/90024_2.png) [@MeigenChou](https://forum.freemdict.com/u/MeigenChou)\
发布日期： [2026 年3 月 11 日 13:59 UTC](https://forum.freemdict.com/t/topic/37083/38 "2026-03-11T13:59:30Z")

</div>

> [@last\_idol](#):
>
> 物书堂不需要一次性提取几十万词头

为了解决索引内部排序和原书不一致的问题。  
假设一字头下有几百几千个词条，【一般】这个词按音序排列应该在前面。但般字的unicode码在CJK区靠后的位置，如果只读取前几十个索引很容易漏掉这个词条。后方索引排序就和原书完全不一样，像搜索s结尾的词都有几万条，需要将几万索引都读出来才可以展现和原书一样的结果。这是一个优秀的词典软件的必要特性。  
年初放假的时候做了个查词的app已经验证了该逻辑的可行性，纯java读取几十万词条都在毫秒级别，只要索引不做压缩就行。词头列表压不压缩都无所谓，反正软件不可能一次把几万词条都显示出来，有足够时间留给解压缩。

---

<div class="post-metadata">

作者： ![last\_idol](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/last_idol/32/2205_2.png) [@last\_idol](https://forum.freemdict.com/u/last_idol)\
发布日期： [2026 年3 月 12 日 06:20 UTC](https://forum.freemdict.com/t/topic/37083/39 "2026-03-12T06:20:25Z")

</div>

> [@MeigenChou](#):
>
> 年初放假的时候做了个查词的app

做到什么程度了？

---

<div class="post-metadata">

作者： ![将作大匠](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/%E5%B0%86/858c86/32.png) [@将作大匠](https://forum.freemdict.com/u/%E5%B0%86%E4%BD%9C%E5%A4%A7%E5%8C%A0)\
发布日期： [2026 年3 月 12 日 10:00 UTC](https://forum.freemdict.com/t/topic/37083/40 "2026-03-12T10:00:34Z")

</div>

同问，哈哈哈😁

---

<div class="post-metadata">

作者： ![MeigenChou](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/meigenchou/32/90024_2.png) [@MeigenChou](https://forum.freemdict.com/u/MeigenChou)\
发布日期： [2026 年3 月 12 日 10:10 UTC](https://forum.freemdict.com/t/topic/37083/41 "2026-03-12T10:10:31Z")

</div>

如字面所示，刚做完词条查找功能。

[上一页](https://forum.freemdict.com/t/topic/37083.md?page=1)

[下一页](https://forum.freemdict.com/t/topic/37083.md?page=3)
