研究Community Server 2.0 几天了,这两天想在自己的网站内实现文章搜索,于是沙拉巴戟的照着CS2.0的搜索部分一边抄一边理解,最后恍然大悟!!
敢情CS2.0的搜索是无法支持中文的。
原因很简单,仔细研究下CS2.0的代码部分大家就理解了,一开始我一直以为CS2.0采用了Sql Server 的全文检索,可是找来找去也没找到有关的代码,但是Post表里却一直有一个IsIndex字段用来判断是否索引过,郁闷了很久。
今天终于理解到,原来CS2.0是自己做索引的!!后台一直有一个线程在HttpApplication启动的时候启动,该线程负责处理些用页面处理比较费力的而且耗时的工作。索引Post的工作也是在这个线程中实现的,而索引工作是通过调用CommunityServer.Components.SearchBarrel.SearchJob类的IndexPosts函数来处理的。而涉及到的Word权重计算函数--Index函数,竟然采用空格来作为分词的手段,这个对于英文来说当然无可厚非了,但是拿到中文上这个算法就完全不行了!!断出来的都是句子~~~这个就是CS2.0为什么不支持中文的原因了!!唉~~
但是就这样放弃了吗?这两天我会就这个问题再仔细研究下的,如果谁有好的解决办法,一定要通知我哦
msn:csharpbird@hotmail.com