栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > PHP > php开源框架 > xunsearch

xapian php 检索,Laravel xunsearch 全文搜索

xunsearch 更新时间:发布时间: 百科书网 趣学号

Xunsearch简介

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

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

测试环境:

Linux 服务器 2 台:

代号

功能

IP

系统

服务器A

提供web服务

192.168.56.2

centos7

服务器B

提供 xunsearch 后端服务

192.168.56.3

centos7

xunsearch 后端服务器配置:

PHP版本 7.0.13 没有安装缓存, 生产环境推荐安装缓存

PHP 7.0.13 (cli) (built: Dec 21 2016 13:53:31) ( NTS )

Copyright (c) 1997-2016 The PHP Group

Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

with Xdebug v2.5.0, Copyright (c) 2002-2016, by Derick Rethans

连接到服务器B 运行下面指令安装, 解压 xunsearch 安装包

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

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

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

cd xunsearch-full-1.4.10/

sh setup.sh

之后会显示安装的交互界面, 然后直接按下回车,安装到默认路径下,

然后喝杯咖啡, 稍等一会 出现下面的安装成功提示即可.

+==========================================+

| Welcome to setup xunsearch(full) |

| 欢迎使用 xunsearch (完整版) 安装程序 |

+------------------------------------------+

| Follow the on-screen instructions please |

| 请按照屏幕上的提示操作以完成安装 |

+==========================================+

Please specify the installation directory

请指定安装目录 (默认为中括号内的值)

[/usr/local/xunsearch]:

Confirm the installation directory

请确认安装目录:/usr/local/xunsearch [Y/n]Y

Checking scws ... no

Installing scws (1.2.3) ...

Extracting scws package ...

Configuring scws ...

Compiling & installing scws ...

Checking scws dict ... no

Extracting scws dict file ...

Checking libuuid ... no, try to install it

Extracting libuuid package ...

Configuring libuuid ...

Compiling & installing libuuid ...

Checking xapian-core-scws ... no

Installing xapian-core-scws (1.2.22) ...

Extracting xapian-core-scws package ...

Configuring xapian-core-scws ...

Compiling & installing xapian-core-scws ...

Checking libevent ... no

Installing libevent (2.0.21-stable) ...

Extracting libevent package ...

Configuring libevent ...

Compiling & installing libevent ...

Extracting xunsearch package (1.4.10) ...

Configuring xunsearch ...

Compiling & installing xunsearch ...

Cleaning ... done

+=================================================+

| Installation completed successfully, Thanks you |

| 安装成功,感谢选择和使用 xunsearch |

+-------------------------------------------------+

| 说明和注意事项: |

| 1. 开启/重新开启 xunsearch 服务程序,命令如下: |

| /usr/local/xunsearch/bin/xs-ctl.sh restart |

| 强烈建议将此命令写入服务器开机脚本中 |

| |

| 2. 所有的索引数据将被保存在下面这个目录中: |

| /usr/local/xunsearch/data |

| 如需要转移到其它目录,请使用软链接。 |

| |

| 3. 您现在就可以在我们提供的开发包(SDK)基础上 |

| 开发您自己的搜索了。 |

| 目前只支持 PHP 语言,参见下面文档: |

| /usr/local/xunsearch/sdk/php/README |

+=================================================+

注意: 如果是生产环境iptables可能需要配置得严格,本文仅为测试

配置一下iptables, 如果你没有启用那么忽略本操作

vi /etc/sysconfig/iptables

加入, 下面两行

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8383 -j ACCEPT

-A INPUT -p tcp -m state --state NEW -m tcp --dport 8384 -j ACCEPT

重启iptables

service iptables restart

启动服务

/usr/local/xunsearch/bin/xs-ctl.sh -b inet start

启动输出内容:

INFO: starting server[xs-indexd] ... (BIND:8383)

INFO: starting server[xs-searchd] ... (BIND:8384)

web服务器配置

安装xunsearch PHP SDK

cd project/root/path

composer require --prefer-dist hightman/xunsearch

创建项目配置文件, 一个项目对应一个配置文件, 项目名称不能重复

cp appvendorhightmanxunsearchappdemo.ini appconfigsearch-demo.ini

修改刚刚创建的文件的内容, 其中server.index 和 server.search 的IP地址是安装了xunsearch服务的服务器IP地址

;搜索配置文件示例

project.name = demo

project.default_charset = utf-8

server.index = 192.168.56.4:8383

server.search = 192.168.56.4:8384

[pid]

type = id

[subject]

type = title

[message]

type = body

[chrono]

type = numeric

修改 app/routes/web.php 文件, 写入一些客户端搜索测试代码

###################### 测试模块 ####################

Route::get('/search/{key}', function ($key){

$xs = new XS(config_path('search-demo.ini'));

$search = $xs->search; // 获取 搜索对象

$query = $key;

$search->setQuery($query)

->setSort('chrono', true) //按照chrono 正序排列

->setLimit(20,0) // 设置搜索语句, 分页, 偏移量

;

$docs = $search->search(); // 执行搜索,将搜索结果文档保存在 $docs 数组中

$count = $search->count(); // 获取搜索结果的匹配总数估算值

foreach ($docs as $doc){

$subject = $search->highlight($doc->subject); // 高亮处理 subject 字段

$message = $search->highlight($doc->message); // 高亮处理 message 字段

echo $doc->rank() . '. ' . $subject . " [" . $doc->percent() . "%] - ";

echo date("Y-m-d", $doc->chrono) . "
" . $message . "
";

echo '
========
';

}

echo '总数:'. $count;

});

Route::get('/makedoc/{title}/{message}', function ($title, $message){

$xs = new XS(config_path('search-demo.ini'));

$doc = new XSDocument;

$doc->setFields([

'pid' => 1,

'subject' => $title,

'message' => $message,

'chrono' => time(),

]); // 用数组进行批量赋值

$xs->index->add($doc);

});

使用浏览器访问上面两个路由来测试功能

测试例子:

http://你的域名/makedoc/关于 xunsearch 的 DEMO 项目测试/项目测试是一个很有意思的行为!

http://你的域名/makedoc/测试第二篇/这里是第二篇文章的内容

http://你的域名/makedoc/项目测试第三篇/俗话说,无三不成礼,所以就有了第三篇

注意: 索引不是即时生效的 延迟大概在10秒左右

1. 关于 xunsearch 的 DEMO 项目测试 [99%] - 2011-08-26

项目测试是一个很有意思的行为!

========

2. 项目测试第三篇 [100%] - 2011-08-26

俗话说,无三不成礼,所以就有了第三篇

========

总数:2

通过上述步骤我们就完成了一个最简单的全文搜索例子.

如果希望了解更多详细内容, 请阅读xunsearch的官方文档.

注意事项

无论是增加索引还是改变数据结果。一定要重建索引。否则不会报错,但是搜索结果会不正确。切记!!!!!

比如:

util/Indexer.php --rebuild --source=mysql://root:pass@localhost/dbname --sql="SELECt * FROM tbl_post" --project=demo

参考内容

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1058042.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号