Google如今在各处都在使用实体,它们通常以/ m /和/ g /作为前缀(但最近我也见过一些/ t /)
我想知道编号的工作方式。对于/ m /,有一个类似于url缩短器执行的模式。定义一个字母(如果是/ m /,则为32个字符“ 0123456789bcdfghjklmnpqrstvwxyz_”,然后将数字转换为“短网址”
例如/ m / 0 4swd <-> 156524(“ / m / 0”似乎是一种前缀)
我仍然受/ g / ID的困扰。我从看到的ID“ 0123456789bcdfghjklmnpqrstvwxyz_”创建了一个合理的字母,但无法正常工作。
由于Google在进行自我转换,因此我举了一个真实的例子: / g / 11b6377dzp <-> 576462201963131861
来自此:Google Search
但我仍然无法弄清楚。
我对这个过程最感兴趣的是如何解决这个逆向工程问题(当然还有结果)。有什么想法吗?
答案 0 :(得分:0)
您为两种情况提供了相同的字母,但是您的问题暗示它们是不同的。除此之外,这是两种编码方案的说明。
从Freebase developer wiki引述,这是计算机ID的编码:
机器生成的id的键是可变长度的短字符序列,由数字,小写字母(不包括元音)和下划线组成。 ...(通过避免元音,我们希望避免意外地[sic]生成令人讨厌的标识符。)中点也是URL安全的,即它们不需要在URL中使用任何转义或转义。
根据相关的Wikidata property page是,
Google知识图谱ID位于一个单独的命名空间中,如您所见,其前缀为“ / g / 1”及其格式。\/g\/1[0-9a-np-z][0-9a-np-z_]{6,8}
因此基数会因位置而异(不允许前导下划线),因此他们选择仅排除可混淆的字母“ o”,而不是所有的元音,尽管有“调皮的单词”的风险,但显然更喜欢使用更多的编码空间。