一个基于字的全文搜索程序的原码和原理分析

tinydust 2003-03-17 12:26:27
http://www.tinydust.net/dzsy.htm
...全文
33 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tinydust 2003-03-20
  • 打赏
  • 举报
回复
不过仔细想了想,好像是筛选的条件变了,数据很多还是老的
tinydust 2003-03-20
  • 打赏
  • 举报
回复
昨天前天的样子,发现google好像数据大更新了一次,我一直关注的几个关键字的结果都有很大的不同...
tinydust 2003-03-20
  • 打赏
  • 举报
回复
yahoo里面分了网站搜索和网页搜索,网页搜索用的就是google的搜索引擎

google应该是保存文摘的,这次google被封事件之后,google看不到网页快照了,以前如果你看过网页快照你就知道了,那个就是文摘,明显的和当前的网页内容不完全一样。特别是最近半年多,感觉google的数据更新速度慢多了。

最后的一个问题自己的cgi和别人的cgi是不一样的
seeker2003 2003-03-20
  • 打赏
  • 举报
回复
不知道您做过搜索引擎系统没有,你下载网页的时候从自己的机器上连接人家服务器的CGI速度是很慢的VS静态叶面,文摘,google是不可能保存文摘的,因为它的文摘不是智能文摘
所谓智能文摘是指类似人工提炼的那种, google不会浪费这么多时间干这个的,智能文摘的生成需要较长的时间,google接受查询的时候,会利用压缩文本模式匹配的方法,直接在
压缩的村文本数据上查询关键字的位置,然后仅仅解压缩这一小部分数据,这就是我们看到的 特殊颜色演示的文摘。大家可以看看我开发的系统 www.souke.com.cn,search.bnu.edu.cn,这是小型的搜索引擎系统。
seeker2003 2003-03-19
  • 打赏
  • 举报
回复
yahoo不是真正的搜索引擎,google不保存文摘,文摘是动态生成的,CGI等动态叶面是可以避免进入死循环的,一个真正的原因是CGI要消耗服务器的资源,所以一般都不抓去CGI

给大家看看小规模的搜索引擎,这是我从2002年10月底到现在独立开发的,
www.souke.com.cn,search.bnu.edu.cn
tinydust 2003-03-18
  • 打赏
  • 举报
回复
up
tinydust 2003-03-17
  • 打赏
  • 举报
回复
请分清两个概念"搜索引擎"和"网站目录"

我们看到的搜索引擎网站其实都在同时提供两种服务"搜索引擎"和"网站目录".如果你只是一个一般用户,你可以不用看我的文章,因为这对你的使用并没有多大的用处----因为对用户来说,概念越少越好.但是如果你想做什么的话,那么我告诉你,你首先应该知道你要做的东西是什么!

在很多搜索引擎网站,"网站目录"的结果叫做"相关网站","搜索引擎"的结果叫做"相关网页",想理解下文请注意这一点.

首先我们将比较简单的

"网站目录"----实际上是提供一个保存网站目录的数据库和一些基于本数据库的查询功能.要求注册的网站提供诸如:网站名称,见解,关键字等.当用户查询的时候就在这些信息中查找有无用户输入的关键字.用ASP写这样的东西易如反掌.

好,现在注意我们来讲复杂的,真正具有技术的东西.

"搜索引擎"----是非常复杂的技术.我们先从"蜘蛛"讲起."蜘蛛"就是一种程序,它的功能是从一个网站的首页出发,把他遇到的所有的链接网页,全部访问的一种程序.搜索引擎利用蜘蛛来把所有在他那里注册的网站的所有内容,收入到他们的数据库里.当用户查询的时候就在数据库查找有无用户输入的关键字.听到这里有些人可能会不相信,实话说,搜索引擎的概念确实你相当恐怖的.
现在我在介绍一下搜索引擎的一些相关技术.
理论上蜘蛛要访问所有的链接,这样太恐怖了.与蜘蛛相关的一项技术就是只访问用户感兴趣的链接.怎么知道用户感兴趣什么呢?用户的查询是有记录的,每个搜索引擎都灰记录下用户的查询记录,这个记录就告诉了你用户感兴趣什么.
还有理论上,为了让用户可以查询到任何感兴趣的东西,我们的到了一个网站必须把它的信息全部保存.但实际上,这又牵扯到了一项技术,分词和筛选技术,用户不可能在一个搜索引擎上查询"我"这个字,为什么?因为据我的估计,所有的中文文章中至少有80-90的包括了"我".这样用户的搜索会带来数以亿计的查询结果,显然这是毫无意义的.(cn.yahoo.com查找"我"可以得到1770000个结果,www.yeah.net3760000个,http://pccms.pku.edu.cn:8000/1437838个)但是"我心飞扬","我心依旧",就又可能是有意义的,他们的查询结果应该是可以想象的合适的.类似的现象很多."可能"这个词作为查询词,也是没什么意思."可口可乐"就有意义."是","不是"等等也都无意义.搜索引擎把这些词过滤掉不保存,就可以降低很大的空间占用.win2000的索引服务就是提供这种技术的.你如果安装了win2000,可以自己试试.
请注意我举的例子,由于上面出现查询结果,我给大家解释一下为什么?因为搜索引擎不光要保存经过分词筛选的全文数据,还要保存一个摘要,这里的我应该是在摘要中找到的.cn.yahoo.com用的是www.google.com的技术,他们的技术我不太了解.
又有如,由于搜索引擎的数据库相当巨大,至少以百G计,来由一项技术就是分布数据库,分布查找.简单的说就是,多台电脑同时保存整个数据库,同时进行查询.这既是空间的要求,也是速度的要求.
还有不让蜘蛛陷入死循环,快速的更新整个数据库等等都是相当难的技术.比如到现在还是少有搜索引擎提供搜索程序生成的网页的,因为这样很容易陷入死循环.
这几项每个都是非常复杂非常有难度的,所以做一个成功的搜索引擎谈何容易.北大天网http://pccms.pku.edu.cn:8000就既是国家863项目也是973项目.在做这个搜索引擎中应用的技术还可以应用到很多地方.
flyfash 2003-03-17
  • 打赏
  • 举报
回复
up
林仪明 2003-03-17
  • 打赏
  • 举报
回复
支持 tinydust(tinydust) !

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧