所谓"全能索引",就是不仅仅像"全文索引"那样增强对文字(例如时态、人称、单复数变化)的索引能力,而是对任意事物任意属性的索引方式。
因为是任意事物任意属性,所以数据表没办法表示好这种东西,必须使用XML那样的方式。Google Base能够做到,因为它不仅仅允许你好像XML那样发布一个事物及登记其属性,更重要的是它能够对类别与属性的名称进行感知,避免滥用(Abuse)。
首先是发布时输入的类型,虽然不仅可以从已有的热门类别选择还可以任你填,但你别以为真的好像普通的tag系统那样任你填哦,你填一个不是单词的上去看看,或者填一个非名词进去看看,你就会发现Google Base提示错误。至于它怎样做到的?因为它基于现在所拥有的数据库,已经能够懂得什么词能够表示一个类别。同时,我也怀疑这个类别它已经知道同义词的存在并且能够同义词归类,例如Blog、Blogs、Blogger、Bloggers等它应该都知道是同一个东西。在输入类别之后,它就能够进入登记属性页,这时候它又能够自动出现一些此类别对象常见的属性,这个我暂时不确定是它根据其他人登记时创建的属性总结出来的,还是即使你创建一个没人登记过的类别的事物它也能列出若干建议属性来。
在属性输入页,你可以删除已有的建议属性或者添加新的属性,这就是类似XML的地方,这些属性也是有类型的,这样就算是同类的事物不同人创建的登记的属性的详细程度也就不同。这时对于之后搜索很好玩的地方,在搜索的时候它懂得提示你按照某个属性来缩窄搜索范围优化搜索,例如People并非每个都有登记Age,到底是否该提示你通过Age范围段索债搜索范围呢,这也是一个职能的地方。
如果我知道如何写数据库引擎,我也写一个轻量级的Google Base来玩玩,据说Google内部有一种BigTable的半结构数据分布式存储和访问接口,这个是从Dash的Feed看来的,原文在这里:
http://www.wespoke.com/archives/001042.html
其实说起这个,是因为我想来想去都不知道那个协作系统如何发布idea,这真的是一个很头痛的问题。idea,就好像我上面说的那样,有任意多的属性,而不仅仅是通过tag就能解决的,我需要一个办法把它们索引起来。而且,你单作一个这样的系统,别人还未必愿意到你那里登记。反而好像Google Base那样,既不说交友信息招贴栏,也不说出租房子招贴栏,但贴的人就不少,有一天Google突然宣布Google Base该怎么用好了而这时它已经有了大量的数据作为启动基础。
没有评论:
发表评论