您当前的位置:首页 > 网站建设笔记 >

Xunsearch 安装、升级

0

安装

Xunsearch PHP-SDK 是与 xunsearch 后端服务协同工作的,所以后先必须先在您的服务器上安装服务端,服务器操作系统要求必须是Linux、BSD或其它类UNIX系统,同时安装了 gcc、make 等基础编译环境。

1.安装、升级 Xunsearch

Tip:即便您之前已经安装过xunsearch,您也可以安装放心的使用该教程进行覆盖安装,会自动完成升级操作,而不用担心会删除任何已存在的数据。我们制作的安装脚本包含了智能检测功能。

此外xunsearch的安装和运行都不需要root权限,强烈推荐单独设置一个系统用户用于安装执行相关指令。

Xunsearch全部开源,理论上也可以从官方提供的git仓库(链接地址:https://github.com/hightman/xunsearch/)获取源码自行构建,但是 这要求必须有较多的技术基础,在此不打算赘述,有这方面需求的技术人员可以到论坛去交流。为方便用户安装,我们提供了一个包含安装所需求的全部组件的完整安装包(含xapian/libevent/scws),您只要下载并安装此完整安装包即可,具体操作步骤如下:

1.运行下面指令下载、解压安装包

wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2

tar -xjf xunsearch-full-latest.tar.bz2

2.执行安装脚本,根据提示进行操作,主要是输入xunsearch软件包的安装目录,强烈建议单独规划一个目录,而不是混到别的软件目录中。

cd xunsearch-full-1.4.17/

sh setup.sh

第一次安装的话,过程可能会稍显漫长,请不必着急,您大可泡杯茶一边喝一边等待即可。

3.待命令运行结束后,如果没有出错中断,则表示顺利安装完成,然后就可以启动/重新启动xunsearch的后台服务,下面命令中的 $prefix 请务必替换为您的安装目录,而不是照抄。

cd $prefix ; bin/xs-ctl.sh restart

强烈建议您将此命令添加到开机启动脚本中,以便每次服务器重启后能自动启动搜索服务程序, 在Linux系统中您可以将脚本指令写进/etc/rc.local即可。

4.有必要指出的是,关于搜索项目的数据目录规划。搜索系统将所有数据保存在 $prefix/data 目录中。如果您希望数据目录另行安排或转移至其它分区,请将 $prefix/data 作为软链接指向真实目录。

Info:出于性能和多数需求考虑xunsearch服务端和SDK API通讯时没有加密和验证处理,并且默认情况 xs-ctl.sh 启动的服务程序是绑定并监听在127.0.0.1上。

如果您的SDK调用和xunsearch服务端不在同一服务器,请使用-b inet方式启动脚本,并注意借助类似iptables的防火墙来控制xunsearch的8383/8384两个端口的访问权限。启动脚本用法举例如下,以下均为合法使用方式:

bin/xs-ctl.sh -b local start  // 监听在本地回环地址 127.0.0.1 上

bin/xs-ctl.sh -b inet start   // 监听在所有本地 IP 地址上

bin/xs-ctl.sh -b a.b.c.d start // 监听在指定 IP 上

bin/xs-ctl.sh -b unix start   // 分别监听在 tmp/indexd.sock 和 tmp/searchd.sock

2.安装 PHP-SDK

PHP-SDK的代码不需要另行下载,已经包含在xunsearch的安装结果中了,在此假设您将xunsearch安装在 $prefix 目录,那么 $prefix/sdk/php 即是 PHP-SDK 的代码目录。目录结构及功能逻列如下:

doc/ 离线 HTML 版相关文档

app/ 用于存放搜索项目的 ini 文件

lib/XS.php 入口文件,所有搜索功能必须且只需包含此文件

util/ 辅助工具程序目录

 ├─ skel/

 ├─ RequireCheck.php 用于检测您的 PHP 环境是否符合运行条件

 ├─ IniWizzaard.php 用于帮助您编写 xunsearch 项目配置文件

 ├─ Quest.php 搜索测试工具

 ├─ Indexer.php 索引管理工具

 ├─ Logger.php

 ├─ SearchSkel.php

 ├─ XSDataSource.class.php

 ├─ XSUtil.class.php

 └─ xs

如果您的搜索应用程序和xunsearch在同一台服务器,则无需复制任何代码,在开发的时候直接包含入口文件 $prefix/sdk/php/lib/XS.php 即可。代码如下:

require_once '$prefix/sdk/php/lib/XS.php';

如果您在其它服务器部署前端搜索代码,请将SDK代码整个目录复制到相应的服务器上,但并不要求放到web可访问目录,考虑安全性也不推荐这么做。

Note:对于前端和后端分离的用户来说,当xunsearch升级安装后必须重新复制安装后的SDK代码去覆盖,否则可能造成版本不匹配导致错误。

4.完全删除 Xunsearch

首先欢迎对xunsearch提出各种修改、改进建议,我们都会认真对待和处理。如果有一天您真的不再需要xunsearch了,那么只要停止运行后端服务,然后完全删除它的安装目录 $prefix 即可,整个软件包所有涉及的文件均在该目录下。

Xunsearch 开发规范

在开始任何开发之前,有必要先强调一下开发规范。开发规范并不是强制性的要求,而只是为了使项目及代码更利于维护、阅读而制定的一些习惯行为公约。

1.目录设置

无论您是否将 PHP-SDK 的代码拷出单独使用,强烈建议保留现有的目录结构。

开发的项目配置 ini 文件统一放入 $prefix/sdk/php/app 目录。

自定义或扩展的类库请统一放入 $prefix/sdk/php/lib 以便 XS 进行 autoload。

2.保留字

所有 Xunsearch PHP-SDK 的系统类库定义时均以 XS 开头,为避免冲突,请自行编写代码和定义时不要也以 XS 开头。

3.自定义分词

Xunsearch 在项目配置时支持针对某些字段自定义分词。每个自定义分词功能单独使用一个文件名,命名为 XSTokenizerXyz.class.php,其中 Xyz 是您自己的分词名称,文件统一 放入 $prefix/sdk/php/lib 目录,分词类名即为 XSTokenizerXyz,该类必须实现 XSTokenizer 接口。

4.字段设计

多数搜索项目可能都是和相关的数据库联动的,出于开发方便,强烈建议让搜索项目的字段命名和实际数据库内的命名一致。在此基础下推荐以下命名规范:

字段名都使用小写命名,您可以根据自己的偏好选择用单数或复数形式,但不要二者同时使用。

名字中的单词应使用下划线分割(例如:product_order)。

只在搜索项目中设置搜索结果展示、搜索条件必须用到的字段,不要在搜索项目中保存无关字段。

5.异常处理

由于 Xunsearch PHP-SDK 全面采用面向对象技术,所有失败的操作均抛出类型为 XSException 的异常,请在执行主线中捕捉它。具体参见 XSException 异常章节的有关介绍。

Xunsearch 开发流程

我们现在讲解一下使用 Xunsearch PHP-SDK 开发搜索应用时的一般开发流程。此处的开发流程假设我们已经完成了对应用的需求分析和必要的设计分析、Xunsearch安装等操作。

  • 编写项目配置文件,请先阅读编写第一个配置文件然后进行手工编写,或使用在线辅助工具生成配置文件。
  • 决定索引更新方式,如果项目搜索的实时要求比较高、而且采用PHP开发,则建议修改项目代码,在数据变动时调用 XSIndex 的相关 API 进行索引同步;否则请另行编写索引管理工具,选用定时或不定时重建的方式。
  • 引入 PHP-SDK 的入口文件 $prefix/sdk/php/lib/XS.php 进行搜索功能和界面开发。
  • 最终调整与正式部署。

Tip:我们提供了一个默认的搜索功能生成工具,通过读取和分析配置文件智能生成搜索相关代码,同时还包含了相应的搜索界面。强烈建议您先使用工具生成代码,然后在此基础上二次开发即可。详情阅读 SearchSkel 生成搜索骨架代码。

项目配置文件中的字段设置直接影响着索引数据库的数据。所以如果您修改了一个已有数据的项目字段配置,那么您必须进行清空索引或平滑重建索引,否则可能会引起搜索结果不正确。

建站咨询

在线咨询真诚为您提供专业解答服务

咨询热线

137 1731 25507×24小时服务热线

微信交流

二维码终于等到你,还好我没放弃
返回顶部