RSS 2.0 Feed
2004-03 Entries
摘要:大家都知道LIKE查询很慢,全文索引就是事先做好相关的索引,表示哪个主题词可以在哪些记录里找到,甚至事先计算好RANK,检索时可以把相关度高的先列出来,这可以大大提高检索的速度。 打个比方,你有很多的小抽屉,每个抽屉里面放一些杂物,假如你要找东西,最原始的方法就是一个个抽屉翻,这就是没有索引的情况。 假如聪明一点,给抽屉编号(唯一键),把哪个号码的抽屉有什么东西记录在纸上,找东西先看看这张纸,这就是普通索引,假如你要知道哪个抽屉有什么,你可以在纸上迅速找到抽屉号码(大家知道这是使用查找树),然后得到相关的信息,这种情况普通索引是很快的;但是要找到一个特定的东西哪些抽屉有,你就要把整张纸遍历一次,这就是LIKE查询,假如你要找哪些抽屉同时有2种甚至更多种物品,LIKE就更加繁琐了。假如一个表有上千万的纪录,大家可以想象查询的代价。 可以换一个思路,另外找张纸,记录一样东西存在于哪些抽屉: 夹子:1,3,4,5,6,9,12... 钱币:2,3,4,7,12... 药丸:1,3,5,6... 这样找到某样东西或者某几样东西都很容易。 全文索引和普通的SQL索引有很多的区别: 普通 SQL 索引 全文索引 存储时受定义它们所在的数据库的控制。 存储在文件系统中,但通过数据库管理。 每个表允许有若干个普通索引。 每个表只允许有一个全文索引。 当对作为其基础的数据进行插入、更新或删除时,它们自动更新。 将数据添加到全文索引称为填充,全文索引可通过调度或特定请求来请求,也可以在添加新数据时自动发生。 不分组。 在同一个数据库内分组为一个或多个全文目录。 使用 SQL Server 企业管理器、向导或 Transact-SQL 语句创建和除去。 使用 SQL Server 企业管理器、向导或存储过程创建、管理和除去。 使用全文索引的话,可以看看下面的帖子(感谢大力和lihonggen0): ???? 如何在sqlserver中建立全文索引:???? http://www.csdn.net/develop/Read_Article.asp?Id=17137??? ???? 如何使用image字段:???? http://expert.csdn.net/Expert/topic/1594/1594455.xml 发现大家有一个常问的问题,就是关于以下的信息的: 查询子句只包含被忽略的词 这是因为使用一些很简单的词,比如'是',进行查询的缘故。 提出的解决办法不外乎是把C:\Program Files\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\noise.chs 清空 觉得这种方法是不可取的,大家打开这个文件看看,发现里面是一些这样的词:is,are,be,at,我,是 这些词都是频率很高的词,而且在查询中的意义不大,就好像几乎每个抽屉里面都有纸屑一样,为这些词作索引得不偿失,所以全文引擎把这些词称为干扰词不做索引,个人觉得在应用中过滤这些词然后向用户提出友好的提示更好,而不是使用清空noise.chs粗暴的对待全文引擎。比方大家可以看看在Google中搜索“的” ------------------------------------------------------------------------- 另外谢谢ghj,一个很重要的东西遗漏了,与一般的索引立即更新不同,全文索引一般是定期维护索引的,所以对于频繁更新的数据不合适,需要做全文索引的对象一般都是论文网页之类,还算适合拉! 个人觉得我的数据库没有代表性,所以也不细说:作索引的时候,CPU和内存使用都很高,时间也很长(下面我的数据库是整个晚上),完成以后并不需要使用很多的系统资源,多个全文查询并发的时候也有不小的CPU消耗,但是比LIKE强。 我的系统上数据库是123M,太小,使用全文索引没有感到特别的优势,但是可以想想对于GOOGLE那样的海量数据,使用LIKE是不可想象的:)当然别人也没有使用关系数据库。...[阅读全文]

posted @ | Feedback (41) | Filed Under [ 信手涂鸦 多维技术 ]

摘要:在使用SQL Search的过程中,还发现了一个问题:它对中文,是按字分词的,下面我解释一下: 比如对'博客堂成员很多是MVP'这句话,假如一个个的字的作索引,会比使用'博客堂','成员',MVP'几个词作索引生成的索引大很多,这样不仅浪费空间,也影响索引的效率和准确度。假如英文是按照字母而不是单词作索引,估计世界上如今就没有全文索引,也没有google了。 但是中文在分词上,相比英文有天然的屏障,英文的单词之间有间隔,但是中文不是,必须使用计算机的人工智能把句子分成一个个的词,有些时候,根据句子本身还不够,还必须根据上下文,或者一些日常知识才能判断。比如 乒乓球拍/卖/完了 和 乒乓球/拍卖/完了 ,电脑咋能知道是哪个意思并正确分词呢! 根据使用的结果,SQL Search对中文使用的应该是按字分词(可能是因为原来是英文引擎的缘故),比方说你要查'马克',它会把'马克思'也给你倒腾出来。 我的一个123M的数据库,全文索引有55M,每次全文查询都比较慢(当然机器也很次)。 -------------------------------------------------------------------------------------------------- 关于按字分词: 应该还是怡红公子的说法比较妥当,大家看看这个句子: 操作系统能否用汇骗语言改写限制它对每个端口的使用率 为了验证分词,故意使用错误的分词,假如都可以索引出该句子,就说明是按字分词的。比如使用 '用汇' ?查询,也可以查出句子,所以得出了SQLServer按字分词的结论,我没有进一步检查,但是现在发现使用'写限',使用'统能'就无法查出来了,证明SQLServer中还是有简单分词的,只是分词结果不理想。 此外,SQLServer还可以使用第三方的产品增强分词的能力。 -------------------------------------------------------------------------------------------------- 假如对分词有兴趣的朋友,这里有一些代码可以看,使用发现分词正确率还是很高的,不过要注册才可以得到:http://www.nlp.org.cn/project/project.php?proj_id=6...[阅读全文]

posted @ | Feedback (20) | Filed Under [ 信手涂鸦 多维技术 ]

摘要:看VC编程经验总结第一版完成的post,居然发现自己和里面的大多数人差不多,我已经知道http://expert.csdn.net/Expert/topic/2826/2826246.xml?temp=5.338687E-02第3条回复就是下载地址了,鼠标还是习惯性的一拉而下,准备在最后丢一个信箱地址。 今天一个同事离职,一个做事认真踏实,我一贯佩服的人,发现他自己copy给我要刻盘的只是一些自己写的例子和lib而已,而我已经在硬盘上留下10多个G的各式各样的文档资料,已经删除的还有n个G(n=?不清楚,反正删的都刻了碟,现在大概1盒多吧,特别声明:不刻电影)。 特别归纳自己的特点如下: 1.硬盘的空间总是不够用 2.拥有一堆可以砸死人的书,其实从来买书的速度比看书的速度快得多 3.在网上浏览文章的速度可以让鼠标的滚轮迅速损坏 4.看到什么可以下载的东西,常常不假思索,down了再说 5.可以在一屏幕的文字里迅速找到大全,宝典,内幕之类的词语 :-P 假如大家觉得刚才我说的太乏味,可以看一些文字:程序员的老婆 & 无责任书评 ,我一对朋友的原创,一笑置之,俺也好在背后好好反省。...[阅读全文]

posted @ | Feedback (9) | Filed Under [ 信手涂鸦 ]

摘要:http://www.csdn.net/develop/article/25/25146.shtm gigix这次招致了大量的攻击,当然每次他都如此。 gigix说: 我唯一的评价是——鼠目寸光。抛开软件的美感和对技艺的热爱不谈,即使单从利益的角度来说,为open source做贡献不仅是一个难得的锻炼、交流、学习的机会,更是一个难得的获得名声和尊敬的机会——在开发者的社群,名声和尊敬几乎就意味着高薪。那些把自己的成果无偿贡献给大家的程序员到底得罪了谁? ---end 通过开源社区功成名就的程序员毕竟是少数,据说Richard.Stallman的物质生活也很一般,就算这些人的物质生活很不错,我想就Stallman在编译器方面的造诣,投身商业软件,可以活的更加滋润。为了名利斤斤计较的人不适合OpenSource。 但是,那些把自己的成果无偿贡献给大家的程序员到底得罪了谁? 他们并没有妨碍大家卖软件,Apache做的好,但是他们没有说,IIS是罪恶的。只是假如你的东西还没有他们业余捣鼓的好,结果多半很惨;也没有妨碍大家使用软件,你可以继续使用MS的东西,假如你觉得不爽,也可以搞个开源的东东玩玩。 大家各自有各自的活法。 我不是个开源者,我想我只能说是温饱,常常被项目压得喘不过气,我无法做到他们这么无私,但是我不想否认这些人的价值,我尊重他们。 软件是有价值的,其实每一个思维,每一行代码,都是有价值的,要不要把这个价值兑现成money,是每个人的自由。无论是MVPs,还是CodeProject上的,或者是SourceForge上的程序员们,都是乐意通过把自己的价值共享给大家而实现自己价值的人。他们可以从中感到快乐,这就是他们的重要动机,这就够了。...[阅读全文]

posted @ | Feedback (14) | Filed Under [ 信手涂鸦 ]

摘要:今日在校园漫步,发现一横幅,上书“庆祝女子节--团委宣”,呵呵,看来各位PLMM对“妇女”这个称谓是略有不满的 然后祝愿各位大小女子,包括光临博客堂的JJMM节日快乐,日日快乐。 沙子说她过节发了一箱啤酒,呵呵,他们的的领导真的很有幽默感 :) 下面是特别祝福: 沙子,HelloCat,人渣渣,红糖水,小雨,谷癞子,一只鱼,533 傅MMs,楚楚,蒋彦紫,豆豆,刘MMs,大腌菜,还有在家过节的cony...[阅读全文]

posted @ | Feedback (1) | Filed Under [ 信手涂鸦 ]

摘要:虚线后的内容转自我的另外一个BLOG:  http://ms.blogger.cn/peon/posts/610.aspx 一直对下面的东西没有ps而耿耿于怀,终于在winmag网站的论坛发现了vbs脚本: http://blog.joycode.com/peon/posts/15026.aspx 这里也可以看出区别:windows的重用一般是基于COM的,而unix的一般基于单个的程序。 毫无疑问,使用COM的重用粒度更小,对于UNIX的基于程序的方式,无疑在文本方式下很有优势(假如你认为基于程序的组合与重用毫无用处,最好了解一下你写程序的IDE,Visuanl Studio,C++ Builder等开发环境的基本上都使用这种方式调用编译器),但是在GUI下几乎毫无用处。 在CUI下的重用使用的是基于管道的标准输入输出重定向,但是在GUI下,这种方式失去了意义。虽然程序通信有众多的方式,比如窗口MESSAGE,SOCKET,管道等,但是GUI桌面程序都尽力把自己做大作全,而且通信方式缺乏统一性,一般都不会考虑程序间的协作。 ------------------------------------------------------------------------------------ 使用过linux/unix的人一定感觉得到unix下命令行工具的强大,至少grep对于程序员,作用多多啊!今天发现我的SFU到期了,想起什么时候看过一个GNU的windows下的unix命令工具箱,于是到google上把它翻了出来,大家有兴趣的看看: http://www.cs.utk.edu/~acm/labstaffsessions/session1/Windows_talk9.html 也可以在这里下载:http://unxutils.sourceforge.net/ 还看到一个vim的Windows版本的介绍,这个以前用过,就算是在windows下,vim也是一个不错的编辑器,特别是对程序员而言: http://www.cs.utk.edu/~acm/labstaffsessions/session1/Windows_talk10.html...[阅读全文]

posted @ | Feedback (2) | Filed Under [ 信手涂鸦 ]

摘要:看了题目不要想歪 用Windows XP应该有不少人了吧!想没有想过几段视频,几张相片,搞点东西和大家一起欣赏一下?看看使用 Windows Movie Maker 制作电影吧!非常简单,简直和拷贝一个笑话发给朋友差不多。 微软提供了很多例子:http://www.microsoft.com/china/windowsxp/moviemaker/videos/samples/default.asp 这里还有一个网友做的她的BLOG宣传片:http://home.liumeiti.org/sandblog.wmv 下载:http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=82887484-6f21-43e2-b4e2-051f72c11a77  ...[阅读全文]

posted @ | Feedback (4) | Filed Under [ MediaTechnology ]

摘要:MMS和RTSP都是用于通过网络进行流媒体服务的协议(mms是微软的私有协议,和那个手机的MMS没有关系的)。 前两天在内容重定向上碰到了问题:http://blog.joycode.com/peon/posts/14725.aspx 今天看了这篇文章:http://msdn.microsoft.com/library/en-us/dnwmt/html/mmsfirewall.asp 提到微软的mms协议关于NAT的问题,终于对这个问题有了初步的头绪:mms协议和rtsp协议都把流分为控制流和数据流,当使用udp作为数据流时候一般这样: client连接到server的一个固定端口比如1755,一切就绪后,然后发送自己的ip地址和端口号给server,server就向这个IP和端口发送数据流。 但是经过NAT时,NAT修改IP包的端口和IP地址,但是NAT并不了解MMS协议,当然不知道修改client发送给server的信息了,于是server发出的数据就无法到达client,类似的还有FTP采用主动模式的情况。 原来一直没有意识到这个问题,因为我是采用的mms的方式,当使用这两种协议描述字的时候,其实client和server私下里会协商采用mmst(走tcp通道)或者mmsu(通过udp发送数据),这个过程称为协议翻转,通过NAT以后,一般都采用了tcp的方法(就是mmst),这种方法似乎数据流和控制流使用了同一个连接,对于NAT是友好的。 今天才意识到mmsu协议其实不是NAT友好的。 然后Client在重定向以后再协议翻转的时候(mms->mmst),出了问题,为什么会出问题,原因仍然不是很清楚,MediaPlayer可没有源代码看 :D...[阅读全文]

posted @ | Feedback (2) | Filed Under [ MediaTechnology ]

摘要:http://www.rssservice.com/ blogger们赶快提交自己的rss吧!...[阅读全文]

posted @ | Feedback (14) | Filed Under [ 信手涂鸦 ]

摘要:以下转载自http://www.frontfree.net/view/article_702.html  Unix痛恨者手册 初中/高中 10 PRINT "HELLO WORLD"20 END 大学一年级 program Hello(input, output);begin  writeln('Hello world');end. 大学四年级 (defun hello ()  (print (list 'HELLO 'WORLD))) 刚参加工作 #include <stdio.h> main (argc, argv)int argc;char **argv; {  printf ("Hello World!\n");} 老手 #include <stream.h> const int MAXLEN = 80; class outstring;class outstring {private:  int size;  char str[MAXLEN]; public:  outstring() { size=0; }  ~outstring() { size=0; }  void print();  void assign(char *chrs);}; void outstring:rint() {  int in;  for (i=0; i<size; i++)    cout << str[i];  cout << "\n";} void outstring::assign(char* chrs) {  int i;  for (i=0; chars[i]!='\0'; i++)    str[i] = chrs[i];  size=i;} main (int argc, char **argv) {  outstring string;  string.assign("Hello World!");  string.print();} 老板 “乔治,我需要一个能打印'Hello World!'的程序”...[阅读全文]

posted @ | Feedback (7) | Filed Under [ 信手涂鸦 ]

摘要:看了一场一边倒的辩论: 关于windows和linux的比较 http://expert.csdn.net/Expert/topic/2727/2727748.xml?temp=.365307 辩论内容在这里: http://bbs.ccidnet.com/forumdisplay.php?s=e6cd0d0e7181365a861483980bc4f3b6&forumid=120 双方简历在这里: http://tech.ccidnet.com/pub/html/developer/itblzbs/index.htm Windows队和Linux/Unix的水平显然不在一个档次上,windows的大都是各个论坛的斑竹水友,Linux/Unix队至少至少都是专职管理员级别的人物,对Windows/Unix/Linux都很了解的, 比赛结果可想而知了。 虽然就我的级别,说哪个好可能贻笑大方,但是假如是我开发项目的话,虽然windows可以做到的,Linux一样可以做到,但是我偏向选择windows,毕竟合适的windows程序员绝对比linux/unix的好找。...[阅读全文]

posted @ | Feedback (7) | Filed Under [ 信手涂鸦 ]

摘要:不记得在哪里看到过的了,要你随便找个地方,打开智能ABC,输入v,然后按向上键->按del键->按Enter或者Space,就会导致一个程序被关闭,的确屡试不爽。还有说在远程终端的登录窗口这么做的话,会导致远程服务器当机,看到这里,立即在我的win2003服务器上试了一把,~服务器没有当掉,但是终端客户端的确是消失了:可惜,我心里阴暗的希望没有得逞啊! 还有一个可惜的地方,就是对一些JJYY的家伙,我始终没有办法在他们说话的时候call出智能ABC的输入条:(...[阅读全文]

posted @ | Feedback (8) | Filed Under [ 信手涂鸦 ]