Apache solr,构建自己的全文检索搜索引擎星期五, 十月 31. 2008公司的网站的搜索一直是使用DotLucene做的,不过一直有很多问题。比如,生成索引的速度太慢,所以不能经常的去生成索引,索引里面坏的东西太多的时候,重新生成索引基本上会失败,因为索引文件被网站进程占用,所以无法删除。没有做搜索服务,而是每个页面去打开索引目录,搜索,然后关闭,导致重复的开关动作浪费极多的CPU,而且占用相当多的内存,无法释放。而且复杂一些查询(比如范围查询,时间查询,分组统计等)因为写法比较复杂,所以根本就没有去做。关键字高亮显示也因为性能和算法问题一直没有做。自己的个人网站上,搜索用的也是PyLucene,情况差不多。 最近在查找更好的搜索引擎供应商的过程中,发现了一个好东西,Apache solr,是由Apache组织基于Lucene所做的扩展应用,详细的介绍网上有不少,就不多说了,大体来说,solr是一个基于Java服务器的服务程序,就像WebService,它自己维护索引,进行查询动作,其它需要使用全文检索功能的程序通过Post和Get的方式使用这个服务,查询命令直接返回结果XML。通过在xml配置文件里面定义字段类型和字段名字,就可以让它支持任意需要的字段数量和类型,而且能够正确处理数值类型的排序和时间类型的范围查询。而且可以通过传递查询参数简单的实现分组统计和高亮显示。 不过因为它是java的,而我又没玩过Java程序,安装和配置着实是花了不少功夫,用了整整一天,把网上那么几篇说明文章看了又看,最后终于算是搞定了。因为几遍文章写的都不全,需要凑合成一篇看才行。所以在这里记一下标准的安装配置流程:(Linux上的) 继续阅读 "Apache solr,构建自己的全文检索搜索引擎" 百度有啊,想说爱你不容易星期四, 十月 30. 2008三天前用百度助理导入的淘宝助理备份出来的csv文件,到今天登录我的有啊终于看见商品了。可是全部是下架状态。点击全选-上架,结果告诉我商品的分类属性已经过期,点击编辑进去看看,商品的类别是空的。 50件商品,要我一个一个选过来吗?我也没看到有批量编辑分类的功能啊。 点击编辑商品,直接进入的是发布商品的时候那个选择分类的三级选单。编辑完了一个商品,编辑第二个的时候,顶上那个“您经常选择的分类”下拉框还是空白的……还要再找一遍。 另外,有啊在未登录的时候不显示我的有啊,必须登录以后才会出现这个链接。不知道是因为抄的不够仔细,还是想留点跟别人不一样的地方,但是,这让我多了一次无谓的点击。 阿里巴巴和百度的公关真不是盖的星期三, 十月 29. 2008百度的有啊刚结束内测,就接连遇到阿里巴巴的追杀。先是淘宝公布封锁百度后的浏量数据,号称没了不良搜索引擎,我们的日子更好过。再是今天下午在CNbeta上出现阿里巴巴高调宣布停止在百度投放广告的新闻,因为百度的流量越来越没价值。令人没想到的是,仅仅过了半个多小时,cnbeta上另一篇文章就出来了,百度站出来说阿里巴巴停止投放广告是因为他们没钱了,资金链断裂了。 如此高效的公关运作,实在是令我们这些互联网小兵佩服的五体投地啊。 顺便说一下对百度有啊的印象。前几日申请了百付宝以后,就自动开通了有啊的内测资格,才过一天,内测就结束了,大家都可以进入有啊了。提交了身份证进行身份验证,用了三个工作日通过。店铺自动开通,名字自动是百度用户名+“的小店”,不能改。(一钻以上信用可以改)百度理所当然的出了个搬家工具,整个搬家工具的页面上绝口不提淘宝二字,全部以第三方来代替。用淘宝助理把商品下载导出成csv,就可以用百度助理上传到有啊,结果告诉我需要24-48小时商品才能看见。难道是人工审查看看用户上传了哪些商品,然后赶紧把自己没有的分类补上? 到现在商品还没显示出来。 我的有啊界面非常简洁,就像我的百度一样,左边的菜单连个样式都没有。百付宝也很简洁。除了帮有啊完成付款任务,没有别的功能。 至于有没有人气,就要看我的商品显示出来以后,有没有人来问价了。 校内/Manyou/Alisoft API应用开发Demo星期六, 十月 25. 2008其实要写个完整的Demo是挺困难的,而且目前我只做了Python的开发,没有写过其它版本,而且以我的习惯,我也不喜欢写完整的代码给别人去抄,所谓授之以鱼不如授之以渔。写个自然语言的版本吧,写起来简单,看的人也容易使用自己喜欢的语言来搞定。 为什么把三个放在一起呢,其实它们的API区别不大,流程都是一样的,只是参数名字的区别而已。 API的工作流程如下:(这些东西三个网站的开发手册里都有) 用户登录到校内/Manyou/Alisoft以后,进入他的应用列表,可以看到他安装过的所有的应用,点击某个应用的时候,就会跳到一个特定的地址。校内和Manyou有XNML/MYML的开发方式,在这种方式下,用户的每次点击都是点到他们的地址上,在他们的服务器上把请求转发到你的网址。这种情况下你在自己的网站上是不能用Session或者Cookie来记住用户的,因为所有的用户都是同一个地方发来的请求。所以你只能每个页面都要从他们传过来的参数里获取当前用户的信息。而IFrame的方式要简单的多,只要给他们一个入口,他们就会生成一个IFrame把参数传入你这个入口地址,以后用户的所有操作都是在你的网站上,所以只要这个入口页面处理查询用户信息并用你自己的Cookie来登录,剩下的跟其它的页面逻辑是一样的。Alisoft也是这样做的。所以这里我只讲IFrame方式。 校内和Manyou是跳到它自己域名的一个URL,然后生成一个IFrame链接到你网站的一个地址,Alisoft则是直接跳到你的网站上的地址。跳到这个地址的时候会带一些参数过来,比如当前用户的ID,SessionID,还有其它一些参数,但是真正有用的就是这两个。凭这两个参数,你就可以反过来去查询该用户的所有信息。 所以你首先需要一个处理登录的页面,接收他传过来的参数,在参数里获取用户ID,SessionID,然后查询用户的真实身份和用户名,如果验证是从API应用里点过来的,就在你自己的站上查询这个用户ID是否已存在,如果存在就取出来设他的Cookie或Session让他登录,如果不存在,就生成一个新用户,跟这个用户ID绑定起来,然后让他登录就行了。用户再点你其它的链接,就是你网站的一般逻辑而已了。 各种语言都有自己发POST请求的方式,需要自己去看看帮助了。 查询用户信息的方式: 校内的:只需要在REQUEST里获取这两个参数:xn_sig_user,xn_sig_session_key,然后往这个地址http://api.xiaonei.com/restserver.do Post这些参数: api_key:你的应用的Key,官方给出来的那个串,method:'xiaonei.users.getInfo',session_key:就是前面获取的这个,call_id:0,sig:空字符串,v: ‘1.0’,fields:'name,sex',uids:前面获取的那个user。 单引号括起来的就是固定字符串。至于sig,本来它应该是个用来验证请求身份是否合法的加密串,但是校内现在并没有用到,所以传个空的过去就行。如果用户是合法的,你就会得到一个包含<name>和<sex>的XML文本,剩下的应该是你自己的问题啦。 Manyou的:你需要获取三个参数:my_sig_uId,my_sig_sessionId,my_sig_prefix,前两个跟校内一样,最后一个是该用户实际所在站点的URL(因为Manyou是一个应用服务器给所有的UCenter子站服务的)。当然还有个参数my_sig_key可以用来验证传过来的参数是否合法,如果你只需要获取用户ID,不需要知道他的名字,就用这个参数来验证的话就可以省却一次POST的时间了。 然后需要需要往这个地址http://api.manyou.com/openapi.php POST这些参数: api_key:你的应用的key,官方给的,format:'JSON',(否则默认返回PHP格式的),method:'user.getinfo',session_key:前面获取的sessionId,v:'0.1',args[fields]: 'name,sex',args[uids]:前面获取的uId,sig:加密字符串。 重点在这个加密字符串的计算上,它的算法是把通用参数按字母排序,再加上你所调用的这个API方法的专用参数,再加上你的应用的安全码(申请的时候给的),拼成一个字符串算出来的MD5。比如上面这个方法,拼字符串就是: 'api_key='+apikey+'&format=JSON&method=user.getinfo&session_key='+my_sig_sessionId+'&v=0.1&args[fields]=name,sex&args[uids]='+userid+'&'+code 注意我中间引号外面的是自己的变量名,别照抄。最后的code就是你的安全码。对这个字符串算一个MD5就是前面需要POST的那个sig参数的值了。 这样如果请求合法,你会得到一个JSON格式的返回,格式为"name":"用户名","sex":"性别"。你只要分解字符串就可以拿到这个用户名了。剩下的就是自己的问题了。 Alisoft的:跟Manyou的非常相似 你需要获取三个参数:user_id,app_instance_id(就是sessionID),token(有特殊用途)。 然后往这个地址http://sipdev.alisoft.com/sip/rest (正式上线后把域名里的dev去掉)POST以下参数: appId:你的应用的编号(官方给出的),appInstanceId:前面给出的,sip_apiname : 'alisoft.validateUser',sip_appkey:跟appId一样,sip_timestamp:当前时间字符串,格式为2008-10-01 08:00:00,token:前面获取的那个,userId:前面获取的那个,sip_sign:加密字符串。 加密字符串的计算方法跟Manyou类似,但是串联字符串的时候没有&和=,而是把所有的内容串在一起,而且你的安全码是放在字符串的最前面的,前面这个方法的字符串就是: code+'appId'+appid+'appInstanceId'+instance+'sip_apinamealisoft.validateUser'+'sip_appkey'+appid+'sip_timestamp'+now +'token'+token+'userId'+userid code是你的安全码,now就是前面说的时间字符串,其它的变量一看就知道了。 返回的内容只有一个<String>1</String>,包含这个就说明该用户是合法的,但是并不会返回他的用户名,如果你想获取用户名的话,还得再去调用另外一个API,自己去看看官方的文档吧(因为他的用户可能是淘宝的,也可能是阿里巴巴的)。调用方法是一样的。 又重装了一次星期六, 十月 25. 2008朋友那里弄到了Windows 2008的正版盘,所以借来试验用一下。正好最近XP出了很多问题,比如休眠几次以后就会出现内存错误,输入法经常在打到某个字的时候把主程序搞崩溃,MSN和QQ都动不动就死掉退出,也该重装了。听说2008比Vista要更稳定更快速,所以想在自己的笔记本上装一个看看。 于是格了C盘安装2008,结果2008装的很顺利,但是驱动却出了问题,无线网卡的驱动装上了,但是找不到我的无线路由,显卡驱动看起来是装上了,一重启就丢失。折腾了很久,仍然解决不了这两个问题,难道作为Server使用的2008就没打算给无线网卡使用? 没办法,又格了再重装,不想装XP了,的确有很多问题,于是装了Vista SP1,还好,以前安装的时候该留的软件都留下来了,也没遇到什么大问题。装MSN的时候跑到官网看到Beta版的下载,想体验一回新版的感觉,于是下载了9.0的安装文件。 安装文件才900多K,但是所有的东西都是在安装过程中再下载安装的,有不少东西可以选,有用的不多,于是选了MSN,Mail和Writer,下载过程挺慢,用了一个小时才下载完。MSN的界面比原来复杂了一些,聊天窗口一开始不太适应,不过过段时间就好了,看起来还是挺清晰的。Mail的界面跟Outlook差不多,包含了邮件,订阅和新闻组,邮件还是多账号的,不过我只试了一下hotmail邮箱,同步有点问题,不太及时,有机会再试试其它POP邮箱。 Live Writer倒是让人眼前一亮。多了不少功能,而且现在可以完全支持我的Serendipity的博客程序了,连书写模板都有,就是不能直接上传图片,不知道有没有人帮他改进一下。很久没用了,看来以后写博客的频率可以再提高一点了。 小软推荐:蓝果桌面日程管理软件星期四, 十月 23. 2008一直想找个好用的桌面日程提醒软件,却一直找不到一个令自己满意的,其实要求不高,软件要简单,就是想在桌面上显示我还有什么事情没干,软件不要太花哨,要稳定,别动不动就死,或者莫名奇妙的任务突然消失,不需要弹出提醒,不需要飞来飞去,我只是想在一个显著的位置放个提醒列表而已。 今天无意间发现了这个小软件,蓝果桌面日程管理软件,软件做的很有创意。其实很简单,它就是在你用作墙纸的图片上写字,然后把写了字的图片替换为你的墙纸。仅此而已。 如此一来,不稳定的问题就不存在了,因为它只是一张普通的墙纸而已。你还可以设置它的文字的位置,大小,颜色等等,总之,效果好到想不到。 虽然不能直接在任务上点击进行添加删除,但是,这绝对是我用过的最好用的一个了。 |
关于我![]() 搜索网站订阅到推荐文章友情链接系统管理 |


最新回复
21/11/2008 11:41
没什么大不了的 商业就是为了赚 钱 你可以不用百度 用百度总归要 付出点什么 忍受点什么
20/11/2008 17:02
同意楼上的!
20/11/2008 14:04
中国国情,我国特色,什么到中国 都会变味的
20/11/2008 13:45
有钱的企业排前面,很正确啊。有 钱的企业还不是在电视上出现的机 会高。医院什么 [...]
19/11/2008 17:46
反正我不喜欢百度的竞价方式!
19/11/2008 16:30
反垄断法只是限制微软用恶意手段 打击竞争对手,并不是限制微软必 须要20块钱卖自 [...]
19/11/2008 16:16
不是法律,那么反垄断法呢?
19/11/2008 15:30
写的好~~~ 世界在变 inte rnet 需要新的生活、思考方式