博客 / Linux/ Sphider + SCWS 为网站搭建垂直搜索引擎笔记

Sphider + SCWS 为网站搭建垂直搜索引擎笔记

Sphider + SCWS 为网站搭建垂直搜索引擎笔记

配置环境

本文操作基于以下环境,请注意部分软件版本已较旧,建议在类似环境中测试或酌情升级。

  • 操作系统:CentOS release 6.9 64bit (Final)
  • 内核版本:Linux version 2.6.32-696.23.1.el6.x86_64
  • Web 服务器:nginx/1.12.2
  • PHP 版本:5.3.3 (Zend Engine v2.3.0)
  • 数据库:Mysql Server version: 5.5.56

1. 安装 SCWS 中文分词系统

首先通过 SSH 连接到已配置好 LNMP 环境的服务器。

建议使用 screentmux 会话,防止编译过程中连接中断:

screen -S soxiaohost

进入计划用于搜索引擎的网站目录(此处以示例目录为例):

cd /home/wwwroot/so.blog.youquso.com

下载 SCWS 源码包(请注意,以下链接可能已失效,建议从可靠镜像获取):

wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2

解压并进入源码目录:

tar xvjf scws-1.2.3.tar.bz2
cd scws-1.2.3

编译并安装到 /usr/local/scws

./configure --prefix=/usr/local/scws
make
make install

检查是否安装成功:

ls -al /usr/local/scws/lib/libscws.la

如果文件存在,通常表示库文件安装成功。可以进一步测试命令行工具:

/usr/local/scws/bin/scws -h

正常应显示帮助信息,包含版本号(scws-cli/1.2.3)及用法说明。

下载并安装词典

进入 SCWS 的配置目录,下载并解压 GBK 和 UTF-8 编码的中文词典:

cd /usr/local/scws/etc
wget http://www.xunsearch.com/scws/down/scws-dict-chs-gbk.tar.bz2 && tar xvjf scws-dict-chs-gbk.tar.bz2
wget http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2 && tar xvjf scws-dict-chs-utf8.tar.bz2

解压后,词典文件(*.xdb)应位于 /usr/local/scws/etc 目录中。

2. 安装 PHP 扩展

首先安装必要的编译工具和 PHP 开发包:

yum install epel-release -y
yum update -y
yum install php-devel autoconf automake -y

进入 SCWS 源码的 PHP 扩展目录:

cd /home/wwwroot/so.blog.youquso.com/scws-1.2.3/phpext

执行 phpize 准备扩展编译环境(请根据你的 PHP 安装路径调整):

/usr/local/php/bin/phpize

配置编译选项,指定 SCWS 的安装路径:

./configure --with-scws=/usr/local/scws

注意:如果 PHP 安装在非标准路径,需要在 configure 命令后加上 --with-php-config=$php_prefix/bin/php-config

编译并安装:

make
make test  # 可选,运行测试
make install # 需要 root 权限

如果编译成功,make install 会输出类似以下信息,并提示扩展模块(scws.so)的安装路径。

Installing shared extensions:     /usr/lib64/php/modules/

配置 PHP 加载扩展

编辑 PHP 配置文件(路径可能不同):

vi /usr/local/php/etc/php.ini

在文件末尾添加以下配置:

[scws]
; 注意:请确保 extension_dir 设置正确,或直接使用 scws.so 的绝对路径。
extension = /usr/lib64/php/modules/scws.so
scws.default.charset = utf-8
scws.default.fpath = /usr/local/scws/etc

保存并退出编辑器,重启 PHP-FPM 服务使配置生效:

/etc/init.d/php-fpm restart

验证扩展是否加载成功:

php -m | grep scws

或在网页中通过 phpinfo() 查看是否有 scws 相关模块信息。

常见问题:32位/64位不匹配

如果重启 PHP-FPM 时出现类似以下错误:

PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/scws.so' - /usr/lib64/php/modules/scws.so: undefined symbol: zend_new_interned_string

这通常是因为 PHP 与扩展的位数(32位/64位)不匹配。解决方法是在编译 PHP 扩展时,在 ./configure 命令中明确指定 PHP 配置路径并启用 64 位支持(如果 PHP 是 64 位):

./configure --with-scws=/usr/local/scws --with-php-config=/usr/local/php/bin/php-config

然后重新执行 make && make install

发表评论

您的邮箱不会公开。必填项已用 * 标注。