# \[DictTango\] 反馈历史 (作参考用，请勿回复此帖）

**URL:** <https://forum.freemdict.com/t/topic/28193>\
**Category:** DictTango\
**Tags:** dicttango\
**Created:** [2020 年6 月 19 日 14:43 UTC](https://forum.freemdict.com/t/topic/28193 "2020-06-19T14:43:02Z")\
**Posts on this page:** 20\
**Page:** 23

<div class="post-metadata">

作者： ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
发布日期： [2022 年1 月 18 日 06:03 UTC](https://forum.freemdict.com/t/topic/28193/442 "2022-01-18T06:03:32Z")

</div>

离线包不会包含在应用里，主要是处理翻译的组件，这些组件必须跟应用一起发布并且体积比较大。  
其实如果你能安装谷歌翻译应用的话，你也可以直接用Dict Tango调用谷歌翻译进行离线翻译。

---

<div class="post-metadata">

作者： ![alexpeng](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/alexpeng/32/19592_2.png) [@alexpeng](https://forum.freemdict.com/u/alexpeng)\
发布日期： [2022 年1 月 18 日 07:38 UTC](https://forum.freemdict.com/t/topic/28193/443 "2022-01-18T07:38:04Z")

</div>

Mdict 中查询单本词典时，貌似就是加载了全部词条。这时查词更像是定位到词条列表中相应位置，在词条中点击了跳转，像是定位到词条列表中新的位置，而且很顺畅，似乎没有进行大量运算。这时点击查询框，它的“词条列表”就定位到了当前词条。我清空手机缓存及 Mdict 的用户数据，其词条顺序没有变化。

PS：说了这么多，并不是我多想要这个功能，只是为楼主提供一个参考。

---

<div class="post-metadata">

作者： ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
发布日期： [2022 年1 月 18 日 07:44 UTC](https://forum.freemdict.com/t/topic/28193/444 "2022-01-18T07:44:03Z")

</div>

其实MDICT在背后并没有加载全部，因为Mdict应用本身并没有索引，你可以发现它的中文词条并不是按拼音排序的，这个时候加载词条不会花太多资源，直接mdx文件就行。但DictTango是经过索引按拼音重新排序的，所以两者的处理的处理方式并不一样。

以后有时间我再想一个比较好的处理办法。

---

<div class="post-metadata">

作者： ![alexpeng](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/alexpeng/32/19592_2.png) [@alexpeng](https://forum.freemdict.com/u/alexpeng)\
发布日期： [2022 年1 月 18 日 08:30 UTC](https://forum.freemdict.com/t/topic/28193/445 "2022-01-18T08:30:49Z")

</div>

辛苦楼主了，是我的要求太多了 😁

---

<div class="post-metadata">

作者： ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
发布日期： [2022 年1 月 18 日 09:51 UTC](https://forum.freemdict.com/t/topic/28193/446 "2022-01-18T09:51:01Z")

</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)\
发布日期： [2022 年1 月 18 日 09:58 UTC](https://forum.freemdict.com/t/topic/28193/447 "2022-01-18T09:58:27Z")

</div>

用数据库就好了，多一点存储空间，在 2022 年应该不是什么问题了。

MDX 在以前为了减小存储空间，浪费太多时间了。

供参考：23 万词条的 MDX 包含压缩块信息的 sqlite 数据库文件大小是 15MB。  
[LDOCE5++ V 1-35.mdx.db](https://forum.freemdict.com/uploads/short-url/rR6b8teMiBBeNNMlw6G62pQ7Skx.db) (15.2 MB)

---

<div class="post-metadata">

作者： ![西北风](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/%E8%A5%BF/a9adbd/32.png) [@西北风](https://forum.freemdict.com/u/%E8%A5%BF%E5%8C%97%E9%A3%8E)\
发布日期： [2022 年1 月 18 日 10:09 UTC](https://forum.freemdict.com/t/topic/28193/448 "2022-01-18T10:09:32Z")

</div>

> [@hua](#):
>
> MDX 在以前为了减小存储空间，浪费太多时间了。

词头可以存数据库，词条内容还是压缩一下比较好

---

<div class="post-metadata">

作者： ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
发布日期： [2022 年1 月 18 日 10:56 UTC](https://forum.freemdict.com/t/topic/28193/449 "2022-01-18T10:56:20Z")

</div>

我之前还真有想过用sqlite来替代mdx的想法，但后来还是放弃了。  
第一点主要是sqlite的查找还是比用二分法查找mdx文件的方法慢，一两个词典可能不明显，但如果词典数量多的话，还是有影响的。  
第二是sqlite有一定的几率会出现数据库文件的损坏

---

<div class="post-metadata">

作者： ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
发布日期： [2022 年1 月 18 日 11:01 UTC](https://forum.freemdict.com/t/topic/28193/450 "2022-01-18T11:01:54Z")

</div>

> [@西北风](#):
>
> 词头可以存数据库，词条内容还是压缩一下比较好

其实很多mdx比较大的原因不是里面真正的内容多，而是为了展示这些内容的所使用的html代码比较多，我觉得最理想的是把展示层的html代码和数据分开来处理，用比较流行的网页模板方式来实现，这样子应该大大减少mdx的占用空间

---

<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)\
发布日期： [2022 年1 月 18 日 11:26 UTC](https://forum.freemdict.com/t/topic/28193/451 "2022-01-18T11:26:48Z")

</div>

不用替代，就像我发的那样，做增强索引就行，不存内容。另外不太可能 sqlite 比二分查找还慢吧，可以跑 1M 查询测试下，我不太信。。 损坏可能是 日志 的问题。

---

<div class="post-metadata">

作者： ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
发布日期： [2022 年1 月 18 日 12:22 UTC](https://forum.freemdict.com/t/topic/28193/452 "2022-01-18T12:22:34Z")

</div>

[https://stackoverflow.com/questions/360040/which-is-faster-hash-lookup-or-binary-search#:~:text=You%20can%20see%20that%20the,for%20collections%20in%20this%20range](https://stackoverflow.com/questions/360040/which-is-faster-hash-lookup-or-binary-search#:~:text=You%20can%20see%20that%20the,for%20collections%20in%20this%20range).

😄 这里有个很好的帖子，其中二楼写了代码证明哈希算法是比二分法快，但这个结论是在数据要先进行排序的前提下的。  
个人觉得，如果数据已经预先排好序，二分法还是无敌的。 😁

---

<div class="post-metadata">

作者： ![Jay](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/jay/32/7362_2.png) [@Jay](https://forum.freemdict.com/u/Jay)\
发布日期： [2022 年1 月 18 日 14:29 UTC](https://forum.freemdict.com/t/topic/28193/453 "2022-01-18T14:29:49Z")

</div>

[https://www.sqlite.org/queryplanner.html#\_lookup\_by\_index](https://www.sqlite.org/queryplanner.html#_lookup_by_index)  
也是 binary search。不存在词典数量多导致两者速度上有太大差异把？

---

<div class="post-metadata">

作者： ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
发布日期： [2022 年1 月 18 日 21:26 UTC](https://forum.freemdict.com/t/topic/28193/454 "2022-01-18T21:26:17Z")

</div>

> [@Jay](#):
>
> 也是 binary search。不存在词典数量多导致两者速度上有太大差异把？

我觉得Sqlite只在精确匹配的情况下才会做Binary search。

> [@](#):
>
> The query starts by doing a **binary search** on the Idx1 index for entries that have fruit=‘Peach’. SQLite can do this binary search on the Idx1 index but not on the original FruitsForSale table because the rows in Idx1 are sorted by the “fruit” column. Having found a row in the Idx1 index that has fruit=‘Peach’, the database engine can extract the rowid for that row. Then the database engines does a **second binary search** on the original FruitsForSale table to find the original row that contains fruit=‘Peach’.

这里说了Binay search只是在fruit='Peach‘ 才会执行，如果fruit like ‘Peach%’ 就未知了，而在mdx查词的时候，我们往往是需要用到fruit like ‘Peach%’ 这种方式的，还有sqlite在fruit='Peach‘ 时会做两次的binary search (看上图的加粗部分），而现实情况中，我们只需要取第一次的结果进行显示。

---

<div class="post-metadata">

作者： ![free](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/f/c5a1d2/32.png) [@free](https://forum.freemdict.com/u/free)\
发布日期： [2022 年1 月 19 日 03:13 UTC](https://forum.freemdict.com/t/topic/28193/455 "2022-01-19T03:13:31Z")

</div>

2.1.7版本安装包56.4MB，太大了，能否精简一下体积呢？（2.1.6版本只有15.1MB）

---

<div class="post-metadata">

作者： ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
发布日期： [2022 年1 月 19 日 03:40 UTC](https://forum.freemdict.com/t/topic/28193/456 "2022-01-19T03:40:52Z")

</div>

> [@\[DictTango\] 安卓版 v2.2.9.0](http://forum.freemdict.com/t/topic/2354/493):
>
> 2.1.7版本安装包56.4MB，太大了，能否精简一下体积呢？（2.1.6版本只有15.1MB）

请参考一下我这里的说明

> [@glacierlee](#):
>
> 应用的大小比较前一个版本增大了3倍，主要是加入了文字识别库还有谷歌的机器学习组件。

这些组件是进行文字识别必需的，如果要精简也不是没有办法，但前提是每个人的手机上都安装谷歌的GMS才行，目前来说这个前提不是很现实。

而且相对于动辄几百M的词典来说，我相信50M对于现在的手机存储完全不是问题。

---

<div class="post-metadata">

作者： ![free](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/f/c5a1d2/32.png) [@free](https://forum.freemdict.com/u/free)\
发布日期： [2022 年1 月 19 日 03:49 UTC](https://forum.freemdict.com/t/topic/28193/457 "2022-01-19T03:49:45Z")

</div>

> [@glacierlee](#):
>
> GMS

感谢回复。很多国产手机不支持Google的GMS，其中最典型的是华为手机（手机操作系统自带登录Google账号的，基本上支持Google的GMS。大家都可以检查一下自己的手机，看看支不支持Google的GMS）

---

<div class="post-metadata">

作者： ![Jay](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/jay/32/7362_2.png) [@Jay](https://forum.freemdict.com/u/Jay)\
发布日期： [2022 年1 月 19 日 05:49 UTC](https://forum.freemdict.com/t/topic/28193/458 "2022-01-19T05:49:49Z")

</div>

我知道的不多，不好说这个。官网有关于 LIKE 的优化的文档。  
不过对与你的说的需要两次 binary seach 那是在要获取该 row 的其他 column 的时候吧。

---

<div class="post-metadata">

作者： ![glacierlee](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/glacierlee/32/74595_2.png) [@glacierlee](https://forum.freemdict.com/u/glacierlee)\
发布日期： [2022 年1 月 19 日 06:23 UTC](https://forum.freemdict.com/t/topic/28193/459 "2022-01-19T06:23:28Z")

</div>

> [@Jay](#):
>
> 不过对与你的说的需要两次 binary seach 那是在要获取该 row 的其他 column 的时候吧。

不是的，你看它的解释，第一次是在索引里Binary Search, 获取结果后根据rowid再到表的记录做多一次Binary Search

---

<div class="post-metadata">

作者： ![Jay](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/jay/32/7362_2.png) [@Jay](https://forum.freemdict.com/u/Jay)\
发布日期： [2022 年1 月 19 日 06:37 UTC](https://forum.freemdict.com/t/topic/28193/460 "2022-01-19T06:37:36Z")

</div>

![image](https://forumcdn.freemdict.com/uploads/default/original/3X/0/1/01a39f37ba3fc7560c4e69f68ef810a94391a201.png)  
左边是 ：  
SELECT fruit FROM fruitsforsale WHERE fruit=‘Peach’;  
右边是：  
SELECT price FROM fruitsforsale WHERE fruit=‘Peach’;

明显右边多了一个 OpenRead

---

<div class="post-metadata">

作者： ![老门2019](https://forumcdn.freemdict.com/user_avatar/forum.freemdict.com/%E8%80%81%E9%97%A82019/32/18613_2.png) [@老门2019](https://forum.freemdict.com/u/%E8%80%81%E9%97%A82019)\
发布日期： [2022 年1 月 20 日 08:57 UTC](https://forum.freemdict.com/t/topic/28193/461 "2022-01-20T08:57:22Z")

</div>

挺好，以前安卓上面主要用goldendict 同时辅助mdict，  
果断下载替换了mdict，准备逐步也把goldendict中的词典全部转移过去

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

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