Mar 20

在google看来,www.globalshareware.com/forumwww.globalshareware.com/forum/ 是两个地方。

Feb 22

  最近半年来,我们的营销工作主要是围绕google展开的。针对google优化的文档浩如烟海,我也没什么太多好说的。现在只是记录一下比较关键的几点:

  1,沙盒。新网站推出,不要猛的一下增加太多的外部链接。结果一下子被GG关起来了,长达4个月还没出来;

  2,链接数量。很关键,越多越好。实际上,GG对YAHOOASK等的链接还是收录的,不要被文档所吓倒。网站只有PR,只有关键字密度,是不够的,链接越多越好;

  3,PR。提高PR可以显著的提升排名。

  4,关键字密度。PR+关键字密度+链接,才能形成一个有效的搞排名,缺一不可。只有PR和链接数量也是不够的。大量雷同的产品文档,竞争激烈的话,谁的关键字密度做的好,谁就在前。

  5,二线产品。热门产品再优化,我们也竞争不过PR7的网站排名。我们这种PR5的,还不如用些精力优化2线产品,排到前3,收益也可以。

  6,DIGG营销。这个也很关键。提高排行很迅速,GG收录也异常迅速

下一步将展开论坛营销,效果还未知。

Feb 21

CFSEARCH在项目中的应用已经有小半年了,很好很强大。事实证明,CFSEARCH在英文项目中还是很好用的。

下半年有2个中文项目,可能也会采用CFSEARCH吧。不知道对中文的搜索结果如何。另外CFSEARCH好像有文档数目的限制,这个很麻烦。不过好消息是CFSEARCH支持独立的SEARCH SERVER,如果真的有海量搜索……其实我们的项目,恐怕永远不会有海量搜索……

PS.搜索中文需要语言包支持,这个东西其实是不太好找的……

Oct 31

  最近做的一个项目,因为需要兼容以前google收录的页面,所以采用了一个小小的技巧:当旧的URL过来,把其中一部分URL(涉及到产品名称)提取出来,作为关键字,通过网站的搜索系统搜索一下,返回一个搜索到的产品列表。

  这个技巧本身很简单,没有什么问题,但是开始上线后,别的问题出现了:随着访问量的增大,sql server的CPU负载达到100%,服务器反应速度严重下降。通过后台监测SQL语句,发现除了复杂的联合查询影响了速度外(这是另外一个优化问题),剩下的就是大量的搜索-like %xxx%这种东西了。

  这个就很好理解了。我们的程序员么,一般没有特殊说明,显然是用like这种SQL查询来解决搜索的问题,开发测试也没什么问题(看起来我们没做过正经的压力测试)。但是上线之后,like的问题就显现了。我们的记录数虽然只有不到5万条,不过每天1万的访问量已经足够挂掉sqlserver2000了。基于这个原因,我开始寻找更好的解决方案。第一个出现在眼前的,显然是大人小孩都喜欢的sqlserver的全文搜索。这东西是微软出的,当然很简单。花了10分钟看看文档,再用20分钟写些测试,搞定,然后安排程序员部署,修改程序,页面,耗时1个人日。最终的方案是用freetext方法来搜索制定关键字,搜索结果粗看上去不错。但是用了1个月之后,问题再次显现:虽然这种方法对服务器压力很低,但是搜索结果相当不靠谱,相关度很低,你需要看的东西,往往在最后几页。

  这就让人忍不住干声连连。微软的东西也靠不住啊。于是我转而寻求第三方的解决方案,比如lucene等等。经过测试,这些产品的搜索效果相当不错,但是主要的问题是和我们的网站衔接麻烦:我们本身的网站都是采用coldfusion开发的,虽然可以调用java,但是这个过程相当费劲,我又不想消耗2个工作日以上处理这个问题。

  最后,作为仅剩的选择,cfsearch出现在我眼前。为啥一直不用cfsearch这个cf开发者首先会想到的东西呢?很简单。在long long time ago,我用过这东西。当时可能是CF4或者5或者MX,在增加了语言包以后可以搜索中文,但搜索结果极烂,对服务器压力极大,所以留给我很恶劣的一个印象。另外还有一个原因,就是以前我没有注意到这东西可以对数据库进行索引,而这次仔细看了CFSEARCH文档,发现其实是可以对QUERY回来的结果集进行索引的,这样一来,就解决了对数据库索引的问题。事实上,不少第三方搜索引擎也是采用类似的方法来实现索引的数据库无关性:先取出一个结果集,然后对结果集生成对应的索引文件。

下面罗列一下代码:

<cfquery name=”getalldat” datasource=”ds”>
select top 100 * from foo
</cfquery>

<cfindex
query=”getalldat”
collection=”gsw”
action=”update”
type=”Custom”
key=”softwareid_int”
title=”softwarename_varchar”
body=”softwaretitle_varchar,DescriptionLong_varchar”
urlpath=”softwareid_int”
custom1=”softwarename_varchar”
custom2=”softwaretitle_varchar”
>

简单说明一下:第一个QUERY把表里所有数据取出来(一个标准的QUERY,当然你可以用任何SQL);第2个CFINDEX针对上个QUERY产生的结果集,生成索引,放置在gsw这个索引文件中。注意,CFINDEX的type需要设置成Custom,因为是索引一个结果集,而不是不同的索引一大堆文件。key就是ID,body就是你打算进行索引的字段,custom,title等,你可以放置打算在CFSEARCH中返回的某条记录的附加值(比如除了记录的ID,你很可能还要返回记录的一些其他内容)。

CFSEARCH就比较简单,不提了。

最终的结果:看起来很美,打算用一个月看看。

免费赠送一个结果集排序的小技巧:

<cfset columnId = mysearchRes.findColumn(”RANK”)>
<cfset mysearchRes.sort(columnId, false)>

Oct 17

  前几天网站服务器的MS SEARCH被关掉了,但是我公司这边没有人知道。只是访问量出现了陡峭的曲线下降,开始以为是google开始更新网站缓冲的问题,但是无意中才发现是服务器的问题。

  这个服务被关掉后,SQLServer的全文索检就不可用了,自然,网站上的搜索功能也不可用了(显然网站没有用like方式的模糊搜索)。因为平时监测,也基本上不会看到搜索功能,所以连续4-5天,没有发现。这样的结果是,访问量降低了1/3。

  我思考的结果是,我们这种软件站,看来用户真的很喜欢使用搜索功能,来寻找某个软件。当初换用全文搜索,是很正确的。不过实际上,SQLServer的全文搜索(free text)真的是相当的烂。考虑有时间的话,用第三方的搜索算法,反正是英文,这样的产品应该是大把抓。中文涉及到分词的问题,我一直没看到好的免费的解决方案。

  也许用google的站内搜索代替是个好办法?