宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒
2010-01-28PHP

没有评论
992 Views

Zend Search Lucene实现全文搜索

简介:Zend_Search_Lucene 是一个完全由 PHP 5 编写的通用文本搜索引擎。由于其将索引保存在文件系统中而不需要数据库支持,因此它几乎可以为任何由 PHP 驱动的网站增加搜索能力。Zend_Search_Lucene 支持下列特性:

具有排名功能的搜索——最符合要求的结果出现在最前面
许多强大的查询类型:短语查询、通配符查询、近似查询、范围查询等
搜索特定的字段,如标题、作者、内容,等等
Zend_Search_Lucene 来源于 Apache Lucene project。要了解关于 Lucene 的更多详情,请访问 http://lucene.apache.org/java/docs/。

看了N久,查了许多的文章和例子之后,终于成功运行了,特记录下来,与大家共享。

首先需下载Zend Framework,下载地址:http://framework.zend.com
我这里用的是Preview 0.1.5版.
具体的使用方法请看官方文档,中文文档在这里:http://www.phpeye.com/zf/zend.search.html#zend.search.overview

好,下面请看我的例子。

1、建立索引
你可以对静态页面文件(如新闻网站等)进行索引,也可以对数据库的内容进行索引,总之,一切的数据都
索引。我这里以mysql数据库为例。

createindex.php

require_once ‘../includes/application_top.php’;
require_once DIR_FS_CATALOG . ‘includes/Zend/Search/Lucene.php’;
if (function_exists(”set_time_limit”) && ! get_cfg_var(’safe_mode’)) {
set_time_limit(0);
}
$index = new Zend_Search_Lucene(’index’, true);//建立索引对象,TRUE表示一个新的索引
$sql = “SELECT c.categories_name, m.models_id, m.models_name, m.models_series, ” .
”m.models_brand, p.products_id, p.products_title…”; //查询数据库产品资料
$result = $class_db->query($sql);
while($row = $result->fetchRow()) {
$url = ‘http://www.sellcamera.net/detail.php/’ . $row[’products_id’]; //产品链接
$title = $row[’products_title’];//产品标题
$description = $models_brand . ‘ ‘ . $models_name . ‘ ‘ . $categories_name; //产品的描述,自己组合它的内容
// Store document URL to identify it in search result.
$doc = new Zend_Search_Lucene_Document();//建立一个索引文档
$doc->addField(Zend_Search_Lucene_Field::UnIndexed(’url’, $url));
$doc->addField(Zend_Search_Lucene_Field::Text(’title’, $title));
$doc->addField(Zend_Search_Lucene_Field::Text(’contents’, $description));
$index->addDocument($doc); //将这个文档加到索引中
}
// Write changes to the index.
$index->commit();//提交,保存索引资料
?>

好的,再运行它,就将网站的所有产品资料的索引保存到指定的目录中了。接下来,我们要做的就是将它们
查找出来。

search.php

require_once ‘../includes/application_top.php’;
require_once DIR_FS_CATALOG . ‘includes/Zend/Search/Lucene.php’;
$index = new Zend_Search_Lucene(’index’);
$str = <<< EOT

echo $str;
$keywords = strtolower($_GET[’keywords’]);
if(! empty($keywords)) {
$hits = $index->find($keywords);
echo ‘
Search result:
’;
foreach ($hits as $hit) {
echo ‘url . ‘”>’ . $hit->title . ‘
’;
echo $hit->contents . ‘


’;
}
}
?>

OK,大功告成,赶快试试吧。

2010-01-26PHP

没有评论
1,009 Views

PHP MSN Class 最新版,支持MSN

PHP MSN Class,支持MSNP9 (MSN 6.2)和最新的MSNP15 (WLM 8.1)协议(MSNP15协议支持离线消息),可以作为MSN机器人使用,或者给MSN、雅虎通发消息。

示例代码:

include_once('msn.class.php');
$msn_username = "username@live.cn";//消息发送人MSN帐号
$msn_password = "12345678";//消息发送人MSN密码
$msn_list = array("xxx@hotmail.com","xxx@live.cn");//消息接收人MSN帐号
$msn = new MSN('MSNP15');//采用MSNP15协议,支持离线消息
if ($msn->connect($msn_username, $msn_password)) {
$msn->sendMessage(“UTF-8编码的中文和英文”, $msn_list);
}
?>

注意:使用MSNP15协议,PHP需要支持mhash;使用msnbot机器人功能,PHP需要支持pcntl。

开发语言: PHP
操作系统: 跨平台
软件主页:http://code.google.com/p/phpmsnclass/
下载地址:http://code.google.com/p/phpmsnclass/downloads/list

putty:Linux远程管理的最佳利器

对linux进行远程管理,我个人喜欢用putty。因为它是个短小精悍的工具,完全可以满足你的使用需求。SecureCRT不止一次听说过, 也不止一次试用过:发现它有标签功能的时候用过;发现它不用借助其它工具可以直接上传下载文件的时候用过;发现别人用它来管理cisco的时候也再次用过。不知道是不是先入为主的原因,就是一直没有喜欢上它,相反却觉得特别不顺手,还特别生气这么难使的东东还要收费!直到两个月前使用多台虚拟机进行实验的时候,终于忍受不了putty要开N个窗口,再次下载了SecureCRT。不经意间竟发现原来她是这么可爱!下面就让我带大家一起,看看怎么样把这看似“难用”的SecureCRT,变成一把所向披靡的屠龙刀。

  先说一下SecureCRT的版本,用的是6.2.2(build 263),一个汉化版。

  linux风格:

  其实吧,我觉得一直打心里排斥SecureCRT的原因,我也知道,就是它的默认显示风格。这绝对是先入为主的原因。不知道现在玩linux的高手以及刚入门的新手,有没有对着黑黑的屏幕(尤其是CRT显示器)做练习一做就是一天的经历。真得,其实那个界面很养眼的。我有那么大概一个月的时间,就面对黑黑的屏幕,做练习,看帮助。现在想想都挺怀念那段时光的,那是我技术最原始的积累。OK,主归正传,SecureCRT说,不喜欢这个风格你可以换吧, 俺支持的风格可多了。先看看默认风格:

  再看一下修改以后的风格:

  key:会话选项->终端->仿真->仿真

  终端选择linux,记着把那个ANSI颜色勾选上。

  字体:

  经过上面一改,好像变成了熟悉的黑底白字,但是还是感觉有啥不对劲,哪不对劲呢?字体!哈哈,知道哪不对劲就好办,看了一下putty用的字体是Courier New那咱也改成这个:

  是不是感觉很熟悉了,经过这两步,putty的钢丝可以给自己一个更顺手的工具的理由了。但是我已经不满足这些了。因为我喜欢了上等宽字体Fixedsys,嘿嘿:

  key:会话选项->终端->外观->字体

  既然说到字体了,咱就顺路说下怎样正确显示中文吧。首先保证你服务器的字体环境是utf-8:

  LANG无论是en_US.UTF-8还是zh_CN.utf-8,只要带utf8就行。然后就该设置SecureCRT了

  key:会话选项->终端->外观->字符编码:

  再看下是不是正常显示中文了?

  啥你那不行?可能你那字体环境变的慢,我也遇到过改后不立马生效的情况,过一会儿就好了或者直接新开一个窗口:)

  标签:

  说到标签咱得好好念道念道.这是俺最喜欢的功能!!!如果要管理的机器特别多,光在窗口中来回切换都会累死人.而SecureCRT的标签功能恰恰解决了这个问题,不要走开,接下来你将会看到更多的惊喜!

  1.自动断开连接

  这个功能就是当你退出当前终端的时候,就自动关闭当前的标签.这样的一个好处就当你退出最后一个标签的时候,整个程序就退出了.再有这里强调一点:希望大家一定要用命令exit正常退出终端而不要直接暴力关闭.因为不正常退的终端服务器会一直保留,如果这是个很多人登陆的机器,那么……所以,良好的习惯从现在做起.偷偷告诉大家一个事儿,其实我退出的时候也不爱输exit还得敲四个字母外加一个回车,我从来都是直接ctrl+d :)

  key:全局选项->终端->断开时关闭

  2.克隆会话

  知道我为啥喜欢用SecureCRT的标签不?因为它能克隆!虽然putty也是复制会话的功能,但是它只能复制一个ip和端口,用户名和密码还得要再输入一遍,一台两台还可以接受,如果…..不说这个了,看下SecureCRT是咋实现的:

  1)鼠标右键

  这个没啥好说的,直接在想克隆的会话上点右键:

  2)鼠标双击

  如果你喜欢了浏览器的双击标签的操作,在SecureCRT你也可以用嘛.但是需要设置一下:

  key:全局选项->终端->标签->选项->双击动作

  看到那个关闭标签了没?就算你不会这个功能也不要选那个关闭标签,你知道我在说什么:)

  3)快捷键

  如果你觉得的为了打开一个新会话还要手移开键盘区去摸鼠标效率低的话,SecureCRT给你更多的选择,你可以自定义一些快捷键,来实现一些东西。

  key:会话选项->终端->仿真->映射键 点击”映射键”会提示你输入键,比如我说按下ctrl+shift+n,会提示:

  选择”ssh功能”:

  默认会选中”ssh_new_session”,直接确定就可以了.然后再确定。

  现在在激活SecureCRT窗口的情况下,直接按ctrl+shift+n,是不是直接克隆了新会话呢?

  再悄悄的说句,这个自定义快捷键的功能,实在太强大了,发挥你的想像,你知道我在说什么。

  3.快速切换

  标签多了,切换也是个事儿,当然了,你可以直接用鼠标去点,但是对一些要求高效快捷的键盘狂人来说,去动鼠标和浪费时间几乎是一个概念.我想对这类人说一句:SecureCRT,你,值得拥有!

  1)alt+1,2,3,4

  这个没啥好说的了,在打开多个标签的情况下,从左到右的依次排号就是1,2,3….所以想切换到哪个标签直接alt+编号就可以了.试一下就知道.

  2)ctrl+tab

  虽然知道了编号,但是有时候我们要快捷切换到上一个使用的标签,在标签很多的时候,可能会不大方便,这时候SecureCRT提供了一个”切换到最近使用的标签页”但是需要设置一下:

  key:全局选项->终端->标签->选项->ctrl+tab

  在使用这个功能的时候,你可能会说,我如果ctrl+tab切换,不小心多按一下,错过了想跳到的标签咋办?嘿嘿,没关系,你可以再多按一个shift,这样ctrl+shift+tab就是按照相反的顺序跳转了:)

  篇幅原因,关于SecureCRT的介绍到这里就先告一段落了,不要犹豫,赶快行动起来实践一下,相信这些东西也会成为你高效管理linux的基石. 在接下来的章节中,我们将讨论,文件传输以及几个小甜点类的技巧,你值得拥有!

MySQL的分支MariaDB进入最后冲刺阶段

MySQL联合创始人Monty Widenius提供了MySQL的分支MariaDB候选版本。据报道MariaDB 5.1完全兼容MySQL 5.1,这个版本早在2008年11月就发布了,增加了很多新的功能和若干个新的补丁程序。开发者称这个候选版本非常稳定,将在不久的将来发布。

  MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX 存储引擎。

  这个项目的更多的代码都改编于 MySQL 6.0,例如 “pool of threads”功能提供解决多数据连接问题。MariaDB 5.1.41 RC可以到这里下载,32位和64位已编译Linux版本,还包括源代码包。MariaDB基于GPL 2.0发布。

jQuery有了组织,依托自由软件组织Software Freedom

jQuery之父John Resig昨天宣布,依托著名的自由软件组织Software Freedom Conservency(旗下还有Samba、ArgoUML、Inkscape、Mercurial等著名开源项目),jQuery核心库以及相关的几个项目jQuery UI、QUit(JavaScript测试套件)、Sizzle(纯JavaScript CSS选择器引擎)联合组成jQuery Project,正式成为一个有组织的开源项目。

该组织目前由开发组(包括John Resig和Yehuda Katz等)、开发者关系组、jQuery UI组、插件组、基础设施和设计组(负责网站)、活动组组成。

返回顶部