我看百度搜索开放平台

Posted in 搜索时代 on September 2nd, 2010 by Adam

最近百度推出的搜索开放平台成为大家热议的话题,我也来废话几句。根据我对开放平台的观察和了解,最直观的感觉,例如天气的搜索,这个意念早在Google中就可以看到。这是Google推崇的给用户提供的富媒体搜索体验的应用。至于百度的解释“开放平台是基于框计算先进技术和服务理念,而提供的开放数据分享暨对接平台。通过该平台,广大站长和开发者可以提交结构化的数据或资源,并在搜索结果中直接展现。”,感觉不到任何新意。

且不说谁盗用了谁的创意,既然Google来不了中国,让国内搜索大哥百度来做这块蛋糕也未尝不可(这也可算做GFW的一大好处)。不过前思后想,这个平台确实有很多让人产生疑问的地方。

  1. 没看到基于框计算先进技术,到底什么是框计算?
    百度开放平台实际上只是一个提交权威数据资源,并由百度根据用户搜索返回相关性最高的资源的一个机制。从技术上将提交数据资源和审核的过程不需要什么技术含量,而搜索结果中直接展现的技术,百度本来就有。那我就纳闷了,框计算究竟在哪里?先进在哪里?实在是抽象不出框计算的概念。
  2. 如何保证平台的开放性?
    开放平台承诺是对任何人开放和免费,但实际上对提交的数据资源来说,并非是人人开放的。因为百度选择的是它认为的权威数据资源,不是每个网站都有权威的数据资源。表面上确实是可以给用户提供最优的搜索内容。但仔细一想,事情没那么简单。同样是《快乐大本营》高清视屏,奇艺-百度旗下视频网站才是最可靠?
  3. “确定性”数据审查的复杂程度,如何体现先进技术和服务理念?
    百度说明平台会根据提交的资源“在覆盖面、时效性、准确性、完整性、原创性、权威性、稳定性以及页面组织等方面进行综合考虑,选择其中最优质、最能满足用户需求的资源推送上线。其他资源将会收录进入平台优质资源储备库。资源质量相当的情况下,根据先到先得原则收录。”,这一长串描述和定义让我想到了很多官腔。虽然话是这么说,可是没有一个相应的标准和具体实施细则,如何让这一审查过程更加有效率和方便?

所以结论是:什么是最精准的、最恰当的、最优的搜索结果,目前来看还是百度说了算。期间难免平衡各方利益,大家各自体谅。

另外从搜索的角度看,百度似乎过于侵犯了用户的搜索自由,干预自由的搜索环境。简单的对天气结果的快速返回确实给大家很多便利,但是一旦这种便利扩展到用户的实际利益,有多少用户愿意让百度来包办?百度真是很有勇气。这里有个度的问题。从我个人的角度,我是很讨厌这种包办式的服务,因为我有自己的判断能力。

我更喜欢的搜索体验倾向于返回从语义上的最好结果,然后让用户去选择最好。网站的好坏,让用户可以给网站发表评论就好。百度这种越俎代庖的”创意”,让我越来越觉得,它和某种权威很像,什么都要在它的控制之下。控制住了,干什么都可以。

Javascript开发需要namespace和错误调试

Posted in javascript on September 1st, 2010 by Adam

做Javascript开发我想最头痛的就是这两方面了:变量的冲突和错误的调试问题。
为了避免在不同js脚本中的变量相互冲突,我们需要用到namespace。下面是一简单的例子:

var ZED = new function() {
//私有内部变量和函数,无法调用
var privateFunction = function() {
alert(‘privateFunction’);
};
//公有内部变量和函数,可以调用
this.publicFunction = function() {
alert(‘publicFunction’);
};
};

变量不冲突了,还要确保错误信息的正常反馈,有利于程序的调试,这样才能让Javascript开发做到游刃有余。
常用的错误调试有两种:window.onerror和try{}catch(e){}模块
下面是简单的例子:
onerror的好处在于容易找到错误的地方,但是不兼容主流的浏览器,除了IE和FireFox

var arrErrors = new Array();
window.onerror = function (strErr, strURL, strLineNumber){
var strMess = “URL: ” + strURL +
“\nline number: ” + strLineNumber +
“\nError Message: ” + strErr;
arrErrors.push(strMess);
alert(arrErrors.join(“\n__________\n\n”));
return true;
}

try.catch的好处在于兼容主流的浏览器,但是错误的信息不足,造成调试困难

try{
with(ZED){
privateFunction();
}
}catch(e){
alert(“Name: ” + e.name + “\nDesc: ” + e.description + “\nMsg: ” + e.msg);
}

参考调式工具: Javascript Stacktrace

var lastError;
try {
ZED.privateFunction();
} catch(e) {
lastError = e;
}
alert(printStackTrace().join(‘\n\n’));

三十岁后的职业规划

Posted in 创业感悟, 窄多废话 on August 31st, 2010 by Adam

还有一个月,我将改变我的工作方式,试着在家SOHO,对于人生相对平稳的我,对于三十多岁的我,这次可以说是最大的一次对职业规划的转变。放弃打工,用心去做自己真正喜欢并且愿意做的事情,这是很让人激动的,同时也希望它能帮我养活自己和家人。那么为什么我会选择现在才转变?

  • 感觉自己的打工生涯已经到了尽头
    现在在公司有一种高不成低不就的感觉,说是管理层也算不上,更觉得自己像个技术杂活工。和公司的发展方向已经有些分歧,换到别的公司也不会有什么太大分别,自己有一些想法,很想去实施,但是对于我这样的三十岁以上的已婚人士来说,从精神到体力上已经无法利用业余时间去完成。与其在公司继续耗费生命,不如豁出去一跳,打造自己全新的人生。
  • 三十岁后打工的困惑
    看着公司新来的都是87,86年的同事,自己也不得不开始服老。技术上没有太大优势,自己也没有太大把握可以进入管理层。那我还能干什么,干多久?和新同事一起日复一日还是换家公司寻找机会?其实都没有明显的改变。看看自己周围的老同学,有了对比才感觉有差距。三十岁以后要么自己是技术牛人,要么升入管理殿堂,如果还是这样不能独当一面,又如何能养活自己和家人,支撑一个家庭?
  • 自己性格和外界的客观原因
    自己的性格算是内向的,在人际复杂的公司肯定是吃亏的。自己曾经乐观的以为可以在公司一直前进下去,有所作为。但是毕竟自己不是老板,有些分歧是无法避免的,要走出这个困境,也只有重新挑战自己。
  • 我能做的决定我的转变
    从毕业一直到现在,感觉很多东西都是水到渠成,不是什么时候你该干什么,而是什么时候你有能力可以干什么。没有这个能力就不要揽这个瓷器活儿。直到三十多岁的今天,我才感觉到自己可以有基础去做些事情了。
  • 心态的成熟
    回想过去十几年,有多少时间是在玩乐中度过,有多少时间是自己真正的在进步。可以说早几年,我是万万想不到我会有今天的想法。面对金钱至上的社会,浮躁冲动的想法也有过不少,但是今天我觉得的我淡定了,从容了。我对自己下的决心很肯定。过去的路已经无法继续前行,唯有重新打造属于自己的自由人生路,感觉这样的人生才是属于自己的,家人的。

于是我决定了,下定决心,等着这一天的到来。

删除Mysql单个表中重复的项

Posted in Mysql on August 30th, 2010 by Adam

Mysql技巧:删除单个表中重复的项
第一步:查寻重复的项及数量

SELECT email,
COUNT(email) AS Num
FROM zhaiduo_table
GROUP BY email
HAVING ( COUNT(email) > 1 )

第二步:根据项目email和数量Num,一个个的删除

DELETE FROM zhaiduo_table WHERE email=’zhaiduo@mail.com’ LIMIT Num-1;

小网站如何做好站内搜索程序

Posted in PHP, 搜索时代 on August 27th, 2010 by Adam

好的站内搜索对增加网站的用户体验是很有帮助的。但是如何做到简单、高效却也并不是太容易。特别是小网站,完全没有必要去搞什么分词搜索技术。个人觉得考虑到以下几点,就可以很好的满足用户的搜索体验,也能给用户提供匹配度较高的搜索结果。

  • 搜索字段的权重
    数据库里不同字段给予不同的权重,如标题的权重大于内容描述。
  • 关键词匹配相关度积分
    这里有个Mysql的搜索技巧

    SELECT title LIKE ‘%php%’ FROM `zhaiduo_blog`;会返回两种结果1或0,

    那么既然搜索字段有不同权重,我们可以这样得到不同的相关度:

    标题:SELECT (title LIKE ‘%php%’)*10 FROM `zhaiduo_blog`;会返回两种结果10或0
    内容描述: SELECT (description LIKE ‘%php%’)*5 FROM `zhaiduo_blog`;会返回两种结果5或0

    这样我们就可以得到不同字段的相关度得分,从而最终得到总的相关度积分。这也是我们排序的主要依据。

  • 关键字密度
    相关度积分还应该考虑到关键字的密度因素,给予不同积分
  • 搜索结果的展示
    把最匹配的结果展示给用户即可,如果搜索结果太多,可以链接到search more的页面。
  • 错别字纠正提示、拼写检查
    对于常见的关键字错误给予足够的提示是很好的用户体验
  • 搜索关键字的防攻击过滤
    注意关键字的过滤检查,防止sql注入攻击
  • 搜索排序的时效性
    相关性有了,也不要忘记时间的因素,应该避免搜索结果09年排在10年之前
  • 相关匹配内容的展示
    就像Google搜索结果会截取一段相关内容展示出来,可以把搜索的关键字做的更加显眼
Tags:
RSS Feed