Google的启示
作者:admin 日期:2007-06-03
最近在对现有的搜索引擎进行分布式的改进, 回顾以前阅读过的 google file system 的文章时发现google的思维和我们平时固守的思维很不一样, 可以说很多在我们看来是有一些"偏激"的,可是正是由于这些偏激, 才导致google与其跟随者的不同.
以下为几个例子:
1. google认为, 所有的硬件都是容易产生故障的, 因此google认为故障是必然的, 不产生故障才是偶然现象. 这个想法和我们通常的意识是相反的.
2. Google认为, 一旦写入, 再也不删除和修改. 这点上google认为修改和删除会对系统造成潜在的伤害, 例如文件的不连续性, 文件定位的困难..
集中/分布式搜索引擎的4种设计方案
作者:admin 日期:2007-06-03
对于搜索引擎, 在索引量和搜索量大到一定程度的时候, 索引更新的效率会逐渐降低, 服务器的压力逐渐升高, 因此基本上整个搜索引擎的利用率可以说是越来越低了, 并且随着海量数据存储带来的困难, 设计一个良好的分布式搜索引擎将是一个搜索引擎能否面相未来发展的关键因素了.
那么分布式搜索引擎的最主要的核心问题是哪些呢?
1. 分布的信息获取和计算以及对此进行的数据统一
这里面包括爬虫/或者相应的数据获取机制的分布, 对信息进行加工的统一管理
2. 数据处理后的分布存储和管理
主要是文件的准确定位和更新,增加,删除,移动的机制
RSS网络爬虫的时间规则
作者:admin 日期:2007-06-03
垂直搜索
作者:admin 日期:2007-06-03
昨天的〔搜索引擎沙龙〕一共来了12位朋友,其中有一多半是做搜索引擎和相关研究的。
讨论的主要话题集中在以下几个:
1.垂直搜索的意义
2.垂直搜索的赢利模式是否强壮
3.垂直搜索的万能模版是否存在,如何实现
4.信息的分类
垂直搜索的核心技术实际上就是智能spider的技术,也就是说如何将定向或者非定向的网页抓取下来进行分析后得到格式化数据的技术。
垂直搜索一般情况下爬虫分3种模式:
1.broad search的基础上对信息进行分类挑选组织。
2.定向爬虫获取信息,配上手工或者自动的模版,将信息进行格式化分析入库。
3.目标网站提供特殊的数据源的接口,利用这些数据进行再加工。
搜索引擎spam的防止
作者:admin 日期:2007-06-03
信息指纹与消重算法
作者:admin 日期:2007-06-03
信息指纹:就是提取一个信息的特征,通常是一组词或者一组词+权重,然后根据这组词调用特别的算法,例如MD5,将之转化为一组代码,这组代码就成为标识这个信息的指纹。
从理论上讲,每两个不同文本的特征信息是不同的,那么得到的代码也应该是不一样的,就象人的指纹。
搜索引擎在建立索引的时候需要对重复内容的网页进行识别和消重,这就要用到信息指纹。
例如,通常搜索引擎要先对网页进行消噪,就是净化网页,将一些模版类的,无用的广告等剔除调。然后得到预处理后的网页,然后对网页进行向量化处理,简单的讲就是分词,统计,并按照词频生成一个列表。
相关度计算与信噪比
作者:admin 日期:2007-06-03
你知道google和百度两个关键词的相关度是多少么?
--最后我将来回答这个问题
通常我们对于文本信息之间得相关性得计算都是采用向量的办法,我在以前的PPT里曾经提到过。然而对于文本信息更深层次的分析不能单纯从字面上分析一篇文章的关键词,更重要的是它隐含的扩展的意义。
传统的关于计算文本相关度和【网页和查询的相关性】的计算都是采用匹配的方式进行的,然而这只能是基于字面意义上的统计计算。这里介绍的做法是采用关键词相关性扩展的做法从而得到更加精确的相关度计算。
例子:
文章 A: 谈论的是大学教育,最高频的关键词是:学生[3],学习[2],大学[2]
文章 B: 谈论的是普通教育,最高频的关键词是:教育[5],教师[1],进修[1]
[]里是相对的权重,可以理解成 TF*IDF
php可逆加密
作者:admin 日期:2007-06-02
php地址栏参数
作者:admin 日期:2007-06-02
PHP伪静态化页面的实现
作者:admin 日期:2007-06-02
<?php
/*
功能:PHP伪静态化页面的实现
具体用法:
例如链接为:test.php/year/2006/action/_add.html
mod_rewrite();
$yearn=$_GET["year"];//结果为'2006'
$action=$_GET["action"];//结果为'_add'
Power By:antsnet.net
E-mail:antsnet.net@gmail.com
网址:http://www.antsnet.net
*/
function mod_rewrite(){
global $_GET;
$nav=$_SERVER["REQUEST_URI"];
$script_name=$_SERVER["SCRIPT_NAME"];
$nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1);
$nav=preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//这句是去掉尾部的.html或.htm
$vars = explode("/",$nav);
for($i=0;$i<Count($vars);$i+=2){
$_GET["$vars[$i]"]=$vars[$i+1];
}
return $_GET;
}
?>
PHP一个加密解密函数
作者:admin 日期:2007-06-02
function str2hex($s)
{
$r = "";
$hexes = array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
for ($i=0; $i<strlen($s); $i++)
$r .= ($hexes [(ord($s{$i}) >> 4)] . $hexes [(ord($s{$i}) & 0xf)]);
return $r;
}
//解密
function hex2str($s)
{
$r = "";
for ( $i = 0; $i<strlen($s); $i += 2)
{
$x1 = ord($s{$i});
$x1 = ($x1>=48 && $x1<58) ? $x1-48 : $x1-97+10;
$x2 = ord($s{$i+1});
$x2 = ($x2>=48 && $x2<58) ? $x2-48 : $x2-97+10;
$r .= chr((($x1 << 4) & 0xf0) | ($x2 & 0x0f));
}
return $r;
}
从PHP手册中提取的一个加密/解密函数
作者:admin 日期:2007-06-02
function encrypt($key, $plain_text) {
$plain_text = trim($plain_text);
$iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB));
$c_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $plain_text, MCRYPT_ENCRYPT, $iv);
return trim(chop(base64_encode($c_t)));
}
function decrypt($key, $c_t) {
$c_t = trim(chop(base64_decode($c_t)));
$iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB));
$p_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $c_t, MCRYPT_DECRYPT, $iv);
return trim(chop($p_t));
}
?>
调用代码:
//test.php
include("encrypt.php");
//设置密匙为"cf",待加密的字符串为"root"
$encryted_str=encrypt("cf","root");
echo "加密后的字符串为:$encryted_str<br>";
//解密
$decrypt_str=decrypt("cf",$encryted_str);
echo "解密后的字符串为:$decrypt_str<br>";
?>
运行结果:
广告位