首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>PHP专区>编程技巧>用PHP来构建自定义搜索引擎
用PHP来构建自定义搜索引擎
来源: 发布时间:2007-09-26 发布人: 浏览: 人次   字体: [ ]  

  编写代码

  最后,您可以编写 PHP 代码来调用 Sphinx 搜索引擎。Sphinx PHP API 非常小并且易于掌握。清单 12 是一个小型 PHP 应用程序,用于调用 searchd 以得到使用上面所示的最后一条命令得到的相同结果(“在属于型号 3 的名称中找到含有 ‘cylinder’ 的所有零件”)。

  清单 12. 从 PHP 调用 Sphinx 搜索引擎

<?php
include('sphinx-0.9.7/api/sphinxapi.php');

$cl = new SphinxClient();
$cl->SetServer( "localhost", 3312 );
$cl->SetMatchMode( SPH_MATCH_ANY );
$cl->SetFilter( 'model', array( 3 ) );

$result = $cl->Query( 'cylinder', 'catalog' );

if ( $result === false ) {
 echo "Query failed: " . $cl->GetLastError() . ".\n";
}
else {
 if ( $cl->GetLastWarning() ) {
  echo "WARNING: " . $cl->GetLastWarning() . "";
 }

 if ( ! empty($result["matches"]) ) {
  foreach ( $result["matches"] as $doc => $docinfo ) {
   echo "$doc\n";
  }

  print_r( $result );
 }
}

exit;
?>

  要测试代码,需要为 Sphinx 创建 log 目录,启动 searchd,然后运行 PHP 应用程序,如下所示:

  清单 13. PHP 应用程序

$ sudo mkdir -p /var/log/searchd
$ sudo /usr/local/bin/searchd --config /usr/local/etc/sphinx.conf
$ php search.php
9
Array (
[fields] => Array (
 [0] => partno
 [1] => description
)

[attrs] => Array(
 [assembly] => 1
 [model] => 1
)

[matches] => Array(
 [9] => Array(
  [weight] => 1
  [attrs] => Array(
   [assembly] => 5
   [model] => 3
  )
 )
)

[total] => 1
[total_found] => 1
[time] => 0.000
[words] => Array(
 [cylind] => Array(
  [docs] => 2
  [hits] => 2
 )
)
)

  输出为 9:匹配的单行的正确主键。如果 Sphinx 找到匹配,相关数组 $result 将包含名为 results 的元素。浏览 print_r() 的输出以查看返回的其他内容。

  注意事项:total_found 是在索引中找到的匹配总数,而 found 是返回的结果数。这两者可能不同,因为您可以更改每次返回多少个匹配结果以及要返回哪批匹配结果,哪个结果利于对冗长的结果列表分页。请查看 API 调用 SetLimits()。一个分页示例是用 $cl->SetLimits( ( $page - 1 ) * SPAN, SPAN ) 调用搜索引擎返回第一批、第二批、第三批(依此类推)SPAN 匹配结果,这取决于显示哪个页面。

  结束语

  Sphinx 还有更多的功能可以利用。我在这里仅仅介绍了最浅显的一部分,但是您现在有一个可以工作的现实示例作为基石来扩展您的技能。

  仔细研读随发行版附带的样例 Sphinx 配置文件 /usr/local/etc/sphinx.conf.dist。该文件中的注释将说明每个 Sphinx 参数可以实现的功能;展示如何创建分布式冗余配置;并说明如何继承基本设置以避免源代码及索引中的重复。Sphinx README 文件还是十分丰富的信息源,包括如何将 Sphinx 直接嵌入 MySQL V5 —— 不需要使用守护程序。

共4页: 上一页 [1] [2] [3] 4 下一页
相 关 文 章   发布商链接
·用PHP程序直接调用文本文件内容实例
·如何用PHP对文本文件加密并限制特定...
·PHP实现Mysql远程同步代码
·PHP程序开发利用PDFLib扩展模块动态...
·PHP利用Jmai组件实现邮件的发送代码
·实例讲解php实现中文水印的代码
·PHP是如何设置COOKIE的保留时间为浏...
·PHP读取站点的链接函数代码实例
·实例讲解PHP原生代码生成RSS文档
·利用PHP制作简单的内容采集器
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·实例讲解PHP原生代码生成RSS...
·PHP读取站点的链接函数代码实
·PHP是如何设置COOKIE的保留时
·实例讲解php实现中文水印的代
·PHP利用Jmai组件实现邮件的发
·PHP程序开发利用PDFLib扩展模
·PHP实现Mysql远程同步代码
·如何用PHP对文本文件加密并限
·用PHP程序直接调用文本文件内
·利用PHP制作简单的内容采集器
热 门 文 章
·PHP实现Mysql远程同步代码
·PHP程序开发利用PDFLib扩展模...
·如何用PHP对文本文件加密并限...
·PHP利用Jmai组件实现邮件的发...
·利用PHP制作简单的内容采集器
·实例讲解php实现中文水印的代...
·用PHP程序直接调用文本文件内...
·实例讲解PHP原生代码生成RSS...
·PHP读取站点的链接函数代码实...
·PHP是如何设置COOKIE的保留时...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .