`
forfuture1978
  • 浏览: 413003 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
曾几何时,捧红一张唱片只有一种方法:广播。MTV在20世纪80年代问世,变成了制造大热门的第二个途径。 然而如今,人们对广告和花钱做广告的机构已经不再那么信任,对个人的信心却呈上升之势。同类人相信同类人。自上而 ...
二手书市场是由两个截然不同的市场组成,一部分是教科书,校园交易是这个市场的核心,具有超强的流动性,商品种类相对较少,买家和卖家多如牛毛,容易以合适的价格买到中意的产品,但就存货会因为版本的更新而被清洗一次。一部分是非学术用书,流动性较差,商品种类很多,买家和卖家数量不足,找到合意产品的概率很小。 Alibris就是一个长尾集合器,将上万家二手书店的藏书连为一体,用信息的力量在一个原本缺乏流动性的市场中创造一个流动性的市场。集合器印证了长尾的第二大力量——普及传播工具。 商业集合器主要分为五大类: 有形产品(如亚马逊,eBay) 数字产品(如iTunes, iFilm) 广告/服务 ...
专业-业余联合运动诞生于生产工具的普及:苹果公司Mac电脑附送的车库乐队可以"录下你的下一曲大热门",数字摄影机和桌面编辑软件产生了一个个家中电影制作人,博客使得在线出版轻而易举。 我们正在由被动消费者转变为主动生产者,业余的博客正在同主流媒体争夺注意力,默默无闻的乐队正在网上发行没有标签的音乐,孩子们可以用电子游戏软件制作自己的电脑动画短片。已经有数百万人掌握了做一业余制作人所必需的工具和行动模式,其中必然有一些人拥有过人的天赋和想象力,创造出最具创造力和影响力的杰作。 维基就是开放式的集思广益,利用大众智慧,通过上百万业余专家,半专家甚至自信有点学问的普通老百姓编纂出 ...
我们的文化和经济中心正在加速转移,从需求曲线头部的少数大热门转向需求曲线尾部的大量利基产品和市场。在一个没有货架空间的限制和其他供应瓶颈的时代,面向特定小群体的产品和服务可以和主流热点具有同样的经济吸引力。 长尾时代的6个主题: 利基产品都远远多于热门产品。随着生产技术的越来越廉价,利基产品的比重也越来越高。 获得利基产品的成本正在显著下降。数字传播,搜索技术,宽带使得一些市场已经有能力供应空前丰富的产品。 消费者必须有办法找到适合他们特殊需求和兴趣的利基产品。自动推荐和产品排名这些过滤器可以把需求推向长尾的后端。 空前丰富的品种和用来做出选择的过滤器,需求曲线会扁平化。 ...
长尾是一系列商业创新的巅峰,这些创新主要体现在生产,供应,配送和销售商品的方法上,比如互联网购物得以实现的所有非互联网要素:联邦快递,国际标准图书编号,信用卡,关系型数据库以及条形码。 互联网所发挥的作用就是使企业能够把各种创新融合在一起,增强其实力,拓展其市场范围。 19世纪末期,全球第一批大型中央仓库出现。铁路运输网络能够把五花八门的产品送往各地。邮购分类目录包含了几十万种不同商品的信息。 20世纪初,美国开始了轰轰烈烈的城市化进程,大量的零售商店涌现。 20世纪30年代,超市出现,并在50年代数量激增,具有成本低,规模大的特点。 20世纪60年代,800免费电话的开通使得分类目录 ...
在工业革命之前,大多数文化都是本地化的。 现代工业的崛起造成了城市化浪潮,使得形形色色的人能够聚集在一起。 商用印刷技术,摄影技术,留声机的发明,激发了第一次流行文化大潮——杂志,小说,书籍,乐谱、 20世纪,电影技术的发明提供了舞台明星在多个城市同时登台的机会。 这些文化载体可以跨越时空的联结不同的人,创造一个同步性的社会。 广电媒体使得一次广播就能够接触到方圆几十里之内的每一个人。 长途电话的发明,创造了电台之间的双向沟通,将地方频道变成了全国频道。 电视取代了广播,大一统文化的终极传媒就此诞生。1954年,74%的家庭会在每周日收看《我爱露西》。 电视黄金时代标志着所谓饮水 ...
网络世界具有强大的口耳相传的威力,并且将两种东西结合在了一起:一是无限的货架空间,二是有关购买趋势和公众观念的实时信息。 消费者能找到的越多,他们喜欢的越多,当他们冲破陈旧的老路,走进广阔的网络天地时,他们发现他们的品味并不像自己想象的那样主流,是强大的营销手段,亦步亦趋的流行文化和狭窄的选择空间使得他们误导了自己。 我们所认定的流行品味实际上只是供需失衡的产物,而供需失衡就是市场对无效分配的一种反应。 必须找到本地的顾客是传统零售业的一个软肋,零售商都必须保证他们的产品能够带来足够多的需求,否则他们无法生存下去,他们都只能从有限的本地居民中拉拢顾客。一部出色的纪录片也许在全国范围内拥有五 ...
  本系列文章将详细描述几乎最新版本的Lucene的基本原理和代码分析。 其中总体架构和索引文件格式是Lucene 2.9的,索引过程分析是Lucene 3.0的。 鉴于索引文件格式没有太大变化,因而原文没有更新,原理和架构的文章中引用了前辈的一些图,可能属于早期的Lucene,但不影响对原理和架构的理解。 本系列文章尚在撰写之中,将会有分词器,QueryParser,查询语句与查询对象等章节。   Lucene学习总结之七:Lucene搜索过程解析(1) http://forfuture1978.iteye.com/blog/632815 Lucene学习总结之七: ...
  本系列文章将详细描述几乎最新版本的Lucene的基本原理和代码分析。 其中总体架构和索引文件格式是Lucene 2.9的,索引过程分析是Lucene 3.0的。 鉴于索引文件格式没有太大变化,因而原文没有更新,原理和架构的文章中引用了前辈的一些图,可能属于早期的Lucene,但不影响对原理和架构的理解。 本系列文章尚在撰写之中,将会有分词器,QueryParser,查询语句与查询对象等章节。   Lucene学习总结之七:Lucene搜索过程解析(1) http://forfuture1978.iteye.com/blog/632815 Lucene学习总结之七: ...
2.4、搜索查询对象     2.4.4、收集文档结果集合及计算打分 在函数IndexSearcher.search(Weight, Filter, int) 中,有如下代码: TopScoreDocCollector collector = TopScoreDocCollector.create(nDocs, !weight.scoresDocsOutOfOrder()); search(weight, filter, collector); return collector.topDocs(); 2.4.4.1、创建结果文档收集器 TopScoreDocCollector ...
2.4、搜索查询对象   2.4.3.2、并集DisjunctionSumScorer(A OR B) DisjunctionSumScorer中有成员变量List<Scorer> subScorers,是一个Scorer的链表,每一项代表一个倒排表,DisjunctionSumScorer就是对这些倒排表取并集,然后将并集中的文档号在nextDoc()函数中依次返回。 DisjunctionSumScorer还有一个成员变量minimumNrMatchers,表示最少需满足的子条件的个数,也即subScorer中,必须有至少minimumNrMatchers个Sco ...
2.4、搜索查询对象   2.4.3、进行倒排表合并 在得到了Scorer对象树以及SumScorer对象树后,便是倒排表的合并以及打分计算的过程。 合并倒排表在此节中进行分析,而Scorer对象树来进行打分的计算则在下一节分析。 BooleanScorer2.score(Collector) 代码如下: public void score(Collector collector) throws IOException {   collector.setScorer(this);   while ((doc = countingSumScorer.nextDoc()) != ...
2.4、搜索查询对象     2.4.2、创建Scorer及SumScorer对象树 当创建完Weight对象树的时候,调用IndexSearcher.search(Weight, Filter, int),代码如下: //(a)创建文档号收集器 TopScoreDocCollector collector = TopScoreDocCollector.create(nDocs, !weight.scoresDocsOutOfOrder()); search(weight, filter, collector); //(b)返回搜索结果 return collec ...
2.4、搜索查询对象   2.4.1.2、创建Weight对象树 BooleanQuery.createWeight(Searcher) 最终返回return new BooleanWeight(searcher),BooleanWeight构造函数的具体实现如下:   public BooleanWeight(Searcher searcher) {   this.similarity = getSimilarity(searcher);   weights = new ArrayList<Weight>(clauses.size());   //也是一个递归 ...
2.3、QueryParser解析查询语句生成查询对象 代码为: QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, "contents", new StandardAnalyzer(Version.LUCENE_CURRENT)); Query query = parser.parse("+(+apple* -boy) (cat* dog) -(eat~ foods)"); 此过程相对复杂,涉及JavaCC,QueryParser,分词器,查询语法等,本章不会详细 ...
Global site tag (gtag.js) - Google Analytics