0

Google 现在到处都在使用实体,它们通常以 /m/ 和 /g/ 为前缀(但我最近也看到了一些 /t/)

我想知道编号是如何工作的。对于 /m/ 有一个类似于 url 缩短器的模式。定义一个字母(在 /m/ 的情况下,这是 32 个字符“0123456789bcdfghjklmnpqrstvwxyz_”并将数字转换为“短 url”

例如 /m/0 4swd <-> 156524 (“/m/0” 似乎是一种前缀)

我被 /g/ ID 困住了。我从我看到的“0123456789bcdfghjklmnpqrstvwxyz_”的 ID 创建了一个合理的字母表,但我无法让它工作。

由于谷歌正在做一些转换,所以我有一个真实的例子:/g/11b6377dzp <-> 576462201963131861

来自:谷歌搜索

但我仍然无法弄清楚这一点。

我最感兴趣的是如何处理这个逆向工程问题的过程(当然还有结果)。有任何想法吗?

4

1 回答 1

1

您为这两种情况提供了相同的字母表,但您的问题暗示它们是不同的。除此之外,这里是对两种编码方案的描述。

引用Freebase developer wiki,这是机器 ID 的编码:

机器生成的 id 的键是短的可变长度字符序列,由数字、不包括元音的小写字母和下划线组成。...(通过避免元音,我们希望避免意外地 [原文如此] 生成令人反感的标识符。) Mid 也是 URL 安全的,即它们不需要在 URL 中使用任何转义或取消转义。

根据相关的Wikidata 属性页面,Google 知识图 ID 位于单独的命名空间中,前缀为“/g/1”,其格式为

\/g\/1[0-9a-np-z][0-9a-np-z_]{6,8}

因此基数因位置而异(不允许前导下划线),他们选择仅排除易混淆的字母“o”,而不是所有元音,尽管存在“顽皮词”的风险,但显然更喜欢更多的编码空间。

于 2019-05-06T21:42:49.463 回答