PHP高性能全文检索开源解决方案:Xunsearch

标签: 搜索引擎 | 发表时间:2012-11-12 15:54 | 作者:黄言之
出处:http://blog.sina.com.cn/netreview

Xunsearch 是一个高性能、全功能的全文检索解决方案。

Xunsearch 旨在帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎。

Xunsearch 中文译名为“ 迅搜”,代码中的经常被缩写为 XS,既是英文名称的缩略也是中文声母缩写。这儿的“迅”是快速的意思,至少包含了两层涵义:其一代表了搜索结果的响应能力,其二则为二次开发难度、速度。

Xunsearch 采用结构化分层设计,包含后端服务、前端开发包两大部分,层次清晰而不交叉。其中后端是采用 C/C++ 编写的守护进程,而前端采用最为流行的脚本语言 PHP ,对于 web 搜索项目更为方便。具体参见 架构设计

Xunsearch 极大程度降低的搜索开发的难度,除了常规的中文分词、字段检索、布尔语法等功能外,还比其它免费的解决方案提供了用户急需的相关搜索、拼音搜索、结果高亮、搜索建议等等。具体的清单请参见我们的 功能列表

Xunsearch 真正全面开源,并使用最流行的开源许可协议 GPL 发布。您可以免费获取本项目的全部源代码,自由的使用它,并在许可条件下修改和再分发,具体参见 授权声明文件。

1. 应用领域

前提是要有一定的 PHP (或其它对应的 SDK 语言) 开发能力,并备有 Unix 类型操作系统的服务器至少一台。

Xunsearch 可以帮助您建立各种行业门户/垂直搜索、BBS 论坛搜索、CMS/Web站内搜索、文档/文献资料检索,以及各种基于现有数据库系统的全文检索。

2. 历史渊源

大约在 2006 年创始人 hightman 开始了全文检索的相关探索,先是发布了纯 PHP 实现的中文分词代码,之后又推出了 MySQL/MyISAM 全文索引的中文分词补丁 MyFT。经过一系列不断完善和改进后,于 2007 年正式发布中文分词项目 scws 并一直维护至今。

起初开发分词的目的就是为了解决中文的全文检索,全文检索技术虽然已经趋于成熟,但多为商业产品。免费开源、并且要好用的还真难找了,于是萌动了自己开发全文检索的念头。2008 年推出了比较粗糙的搜索解决方案 FTPHP,之后于 2010 年又开启了 Xungle 项目,直接免去各种技术需求,为用户提供包含软硬环境在内的搜索服务。

在 Xungle 项目的运作过程中,我们发现还有大量的用户出于各种原因,不得不自行解决搜索技术。此外,我们发现了国外一个优秀的开源搜索引擎基础库 Xapian,它采用 C/C++ 开发,并且性能卓越,久经考验。但是并没有整合中文分词,并且开发难度、复杂度也较大。于是我们下决心整合 Xapian 和 Scws,并在此基础上提供更多、更常用的搜索功能。这就是 Xunsearch ,目前版本发布正在准备中,代码也已托管到 github 中。

3. 开发团队

本项目由杭州云圣网络科技公司创立并维护,同时也是唯一就 Xunsearch 提供相应的商业技术服务、支持的公司。

4. 致谢

是大量 xungle 用户的提议促使我们开启 xunsearch 项目,Xunsearch 的往后发展将离不开广大用户的支持,还要特别感谢在此其间义务参与 xunsearch 内测的一些朋友。

Xunsearch 底层采用 C/C++ 编写,其中用到了许多其它优秀项目,在线特别感谢它们的团队和作者。主要有以下几个:

  • xapian-core 这是 Xunsearch 的底层索引设计方案
  • scws 默认内置的中文分词解决方案
  • libevent 后端服务器的事件处理模型
  • nginx 搜索服务器的设计借鉴了 nginx 的方式,采用多进程、多线程混合用于处理高并发请求
  • Yii 非常优秀的 PHP 开发框架,xunsearch 官网采用该框架,文档组织形式也参考自 Yii

 

Xunsearch 架构简图

Xunsearch 分为后端服务和前端开发包两大部分,这两个部分允许部署在不同服务器中。

后端是采用 C/C++ 开发的守护进程,包括索引服务器(xs-indexd)、搜索服务器(xs-searchd)。索引服务器用于集中处理索引变动,并自动调用工具程序优化和更新数据库;搜索服务器借鉴了 nginx 的作法,使用进程、线程混合工作模式处理高并发的搜索请求。

通常在二次开发时并不需要去关心后端的实现,只要在我们提供的前端开发包基础上开发即可。

前端开发包通常使用脚本语言编写,负责协商前端调用与后端服务通讯,我们称之为 SDK 开发包。理论上支持各种包含 socket 通讯实现的脚本语言,但目前我们只提供了 PHP 语言,以后再陆续考虑和开发其它语言。非常欢迎有能力有意愿的朋友提供、贡献其它语种的代码。

下面是我们用字符直接制作的一张架构简图。

image

 官网地址:  http://www.xunsearch.com/

  青春就应该这样绽放   游戏测试:三国时期谁是你最好的兄弟!!   你不得不信的星座秘密

相关 [php 性能 全文检索] 推荐:

PHP高性能全文检索开源解决方案:Xunsearch

- - 互联网旁观者
Xunsearch 是一个高性能、全功能的全文检索解决方案. Xunsearch 旨在帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎. Xunsearch 中文译名为“ 迅搜”,代码中的经常被缩写为 XS,既是英文名称的缩略也是中文声母缩写. 这儿的“迅”是快速的意思,至少包含了两层涵义:其一代表了搜索结果的响应能力,其二则为二次开发难度、速度.

PHP项目性能优化

- - SegmentFault 最新的文章
PHP项目性能优化的三个层次. PHP周边(服务器,数据库,webserver). 尽量使用PHP原生函数和常量,类. 如果要实现的功能有原生PHP函数,则不要自己用PHP实现. 尽量使用性能更高的内置函数. 比如isset和array_key_exists都可以使用,则使用isset. 尽量不要使用错误抑制符@.

查看php代码的性能——xhprof

- - cloudfly
今天是头脑风暴,想测试一下现在做得项目的执行效率. google了一下,发现了xhprof,试了一试,感觉真是个神器啊. 就是facebook放出的一个开源的,用来测试php代码性能的工具. 在网上也搜到了Xdebug,但是都说特别耗资源. 而xhprof是个轻量级的,而且用户体验也相当不错. 官方地址: http://pecl.php.net/package/xhprof.

PHP性能监控测试----Xhprof

- - CSDN博客架构设计推荐文章
开始工作到现在,除了做新手任务,基本上都是和服务器端打交道,做前端的时间很短. 目前公司的性能监控和测试:Xhprof和ab测试. Xhprof----facebook开源的,轻量级的PHP性能分析工具: 包括函数的调用次数,花费的时间(自身花费时间和包含内部函数花费的时间),所占内存/CPU,所占内存的峰值及所占百分比.

HHVM 是如何提升 PHP 性能的?

- - 码农网
HHVM 是 Facebook 开发的高性能 PHP 虚拟机,宣称比官方的快9倍,我很好奇,于是抽空简单了解了一下,并整理出这篇文章,希望能回答清楚两方面的问题:. 它为什么比官方的 PHP 快很多. 在讨论 HHVM 实现原理前,我们先设身处地想想:假设你有个 PHP 写的网站遇到了性能问题,经分析后发现很大一部分资源就耗在 PHP 上,这时你会怎么优化 PHP 性能.

php类方法在线性能测试

- - CSDN博客编程语言推荐文章
在两个月前一个群里的朋友问了一个问题,他说:“现在他们公司的项目有一个模块的性能在线表现非常差,很长时间没有查出问题所在,老板一怒之下让他把所有类方法的执行时间给记录进行分析,并且不能影响现在的项目性能. ”老板让他记录这些信息是为了分析具体影响性能的地方在哪些地方,待项目运行一段时间就去除. 这个需求导致两个个问题,第一是怎么监听这个模块所有类方法的执行时间,第二是怎么能在不影响现在项目性能的情况下完成(本身性能就很差了),下面我们就这两个问题来分析:.

Python 和 PHP 的 Web 服务器性能测试

- 非狐外传 - python.cn(jobs, news)
这几天一直在玩虚拟机,测了几种Python和PHP的Web服务器的性能,顺便记录下来. 宿主:MacBook Pro MC700. 操作系统:Mac OS X 10.6.8. CPU: 2.3GHz Intel Core i5(双核). 虚拟机:Virtual Box. 操作系统:Linux version 2.6.32-5-686 (Debian 2.6.32-35).

Python和PHP的Web服务器性能测试

- phus - keakon的涂鸦馆
这几天一直在玩虚拟机,测了几种Python和PHP的Web服务器的性能,顺便记录下来. 宿主:MacBook Pro MC700. 操作系统:Mac OS X 10.6.8. CPU: 2.3GHz Intel Core i5(双核). 虚拟机:Virtual Box. 操作系统:Linux version 2.6.32-5-686 (Debian 2.6.32-35).

php性能分析工具xhprof的安装使用

- - 操作系统 - ITeye博客
项目域名:http://www.ajia.com. 项目路径:/home/www/. cp -r xhprof_html xhprof_lib /home/www/  (复制xhprof_html、xhprof_lib这两个目录到“项目目录”下,此处目的是建立xhprof的数据分析目录,可将此目录配置成虚拟主机访问)  .

非侵入式监控PHP应用性能监控分析

- - 博学无忧
所谓非侵入式监控PHP应用性能,就是不修改现有系统代码,而对系统进行监控. 这样的系统才能更容易的应用到PHP应用中. 如果只是监控每次请求的访问时间. 在nginx的日志中有两个选项. $request_time 和 $upstream_response_time. 1、$request_time 指的就是从接受用户请求的第一个字节到发送完响应数据的时间,即包括接收请求数据时间、程序响应时间、输出响应数据时间.