首页 » Web前端 » sphinxphpubuntu技巧_在Ubuntu安装和设备Sphinx

sphinxphpubuntu技巧_在Ubuntu安装和设备Sphinx

访客 2024-11-22 0

扫一扫用手机浏览

文章目录 [+]

在开始本指南之前,您须要:

一个Ubuntu 16.04做事器。
sudo的一个非root用户,您可以通过以下设置本教程 。
安装在做事器上,你可以通过下面的第2步设置在MySQL 本教程 。

第1步 - 安装Sphinx

sphinxphpubuntu技巧_在Ubuntu安装和设备Sphinx

在Ubuntu上安装Sphinx很随意马虎,由于它在本地软件包存储库中。
利用安装它apt-get 。
弗成可以运行apt-get update

sphinxphpubuntu技巧_在Ubuntu安装和设备Sphinx
(图片来自网络侵删)

sudo apt-get install sphinxsearch

现在您已经在做事器上成功安装了Sphinx。
在启动Sphinx守护进程之前,让我们进行配置。

第2步 - 创建测试数据库

接下来,我们将利用随包供应的SQL文件中的示例数据设置数据库。
这将许可我们测试Sphinx搜索往后事情。

让我们将示例SQL文件导入数据库。
首先,登录到MySQL做事器shell。

mysql -u root -p

提示时输入MySQL root用户的密码。
您提示将改变为mysql> 。

创建虚拟数据库。
在这里,我们称它为测试 ,但你可以将其命名为任何你想要的。

CREATE DATABASE test;

导入示例SQL文件。

SOURCE /etc/sphinxsearch/example.sql;

然后离开MySQL shell。

quit

现在你有一个数据库添补样本数据。
接下来,我们将定制Sphinx的配置。

第3步 - 配置Sphinx

Sphinx的配置该当是在一个名为sphinx.conf中/etc/sphinxsearch 。
配置包括那些运行必不可少的3个紧张模块: 索引 ,searchd的 ,和来源 。
我们将供应一个示例配置文件供您利用,并阐明每个部分,以便往后进行自定义。

首先,创建sphinx.conf文件。

sudo nano /etc/sphinxsearch/sphinx.conf

这些指数 ,searchd的 ,和源块的描述如下。
然后,在这个步骤结束时,对全部sphinx.conf被包括为你复制并粘贴到文件中。

源块包含源代码,用户名和密码到MySQL做事器的类型。
所述的第一列sql_query该当是唯一的ID。
SQL查询将在每个索引上运行,并将数据转储到Sphinx索引文件。
下面是每个字段和源块本身的描述。

type :数据源索引的类型。
在我们的例子,这是MySQL。
其他支持的类型包括pgsql,mssql,xmlpipe2,odbc等。
sql_host :主机名MySQL的主机。
在我们的例子,这是localhost 。
这可以是域或IP地址。
sql_user :用户名MySQL的登录。
在我们的例子,这是根源 。
sql_pass :密码为MySQL用户。
在我们的示例中,这是根MySQL用户的密码。
sql_db :存储数据的数据库的名称。
在我们的例子,这是磨练 。
sql_query :查询从数据库到索引那转储数据。

这是源块:

sphinx.conf的源代码块

source src1{ type = mysql #SQL settings (for ‘mysql’ and ‘pgsql’ types) sql_host = localhost sql_user = root sql_pass = password sql_db = test sql_port = 3306 # optional, default is 3306 sql_query = \ SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \ FROM documents sql_attr_uint = group_id sql_attr_timestamp = date_added}

索引组件包含源和存储数据的路径。

source :源块的名称。
在我们的例子,这是src1的 。
path :路径保存索引。

sphinx.conf的索引块

index test1{ source = src1 path = /var/lib/sphinxsearch/data/test1 docinfo = extern}

该searchd的组件包含端口和其他变量来运行Sphinx守护进程。

listen :这Sphinx守护进程运行的端口,后面的协议。
在我们的例子,这是9306:mysql41。
已知的协议是:Sphinx (SphinxAPI)和:mysql41(SphinxQL)query_log :路径保存查询日志。
pid_file :到Sphinx守护进程的PID文件的路径。
seamless_rotate :同时旋转海量数据预缓存的指标,防止searchd的摊位。
preopen_indexes :是否强行盘前在启动时的所有索引。
unlink_old :是否删除成功旋转旧的索引拷贝。

searchd块的sphinx.conf

searchd{ listen = 9312:sphinx #SphinxAPI port listen = 9306:mysql41 #SphinxQL port log = /var/log/sphinxsearch/searchd.log query_log = /var/log/sphinxsearch/query.log read_timeout = 5 max_children = 30 pid_file = /var/run/sphinxsearch/searchd.pid seamless_rotate = 1 preopen_indexes = 1 unlink_old = 1 binlog_path = /var/lib/sphinxsearch/data}

复制和粘贴的完全配置如下。
你须要下面来改变它唯一的变量是sql_pass源块,这是高亮显示的变量。

完全的sphinx.conf文件

source src1{ type = mysql sql_host = localhost sql_user = root sql_pass = your_root_mysql_password sql_db = test sql_port = 3306 sql_query = \ SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \ FROM documents sql_attr_uint = group_id sql_attr_timestamp = date_added}index test1{ source = src1 path = /var/lib/sphinxsearch/data/test1 docinfo = extern}searchd{ listen = 9306:mysql41 log = /var/log/sphinxsearch/searchd.log query_log = /var/log/sphinxsearch/query.log read_timeout = 5 max_children = 30 pid_file = /var/run/sphinxsearch/searchd.pid seamless_rotate = 1 preopen_indexes = 1 unlink_old = 1 binlog_path = /var/lib/sphinxsearch/data}

探索更多的配置,你可以看看在/etc/sphinxsearch/sphinx.conf.sample文件,里面有所有的变量在更详细的阐明。

第4步 - 管理索引

在这一步中,我们将数据添加到Sphinx索引,并确保利用指数保持最新cron 。

首先,利用我们之前创建的配置将数据添加到索引。

sudo indexer --all

你该当得到类似下面的东西。

OutputSphinx 2.2.9-id64-release (rel22-r5006)Copyright (c) 2001-2015, Andrew AksyonoffCopyright (c) 2008-2015, Sphinx Technologies Inc (http://sphinxsearch.com)using config file '/etc/sphinxsearch/sphinx.conf'...indexing index 'test1'...collected 4 docs, 0.0 MBsorted 0.0 Mhits, 100.0% donetotal 4 docs, 193 bytestotal 0.010 sec, 18552 bytes/sec, 384.50 docs/sectotal 4 reads, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avgtotal 12 writes, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg

在生产环境中,有必要保持索引为最新。
为了做到这一点,让我们创建一个cronjob。
首先,打开crontab。

crontab -e

可能会讯问您要利用哪个文本编辑器。
选择你喜好的; 在本教程中,我们利用nano 。

随后的cronjob将每小时运行一次,并利用我们之前创建的配置文件向索引添加新数据。
将其复制并粘贴到文件末端,然后保存并关闭文件。

crontab

@hourly /usr/bin/indexer --rotate --config /etc/sphinxsearch/sphinx.conf --all

现在Sphinx已经完备设置和配置,我们可以启动做事并考试测验。

第5步 - 启动Sphinx

默认情形下,Sphinx守护程序关闭。
首先,我们将改变这一行启用START=no到START=yes中/etc/default/sphinxsearch 。

sudo sed -i 's/START=no/START=yes/g' /etc/default/sphinxsearch

然后,利用systemctl重启Sphinx守护进程。

sudo systemctl restart sphinxsearch.service

要检讨Sphinx守护程序是否精确运行,请运行。

sudo systemctl status sphinxsearch.service

你该当得到类似下面的东西。

Output● sphinxsearch.service - LSB: Fast standalone full-text SQL search engine Loaded: loaded (/etc/init.d/sphinxsearch; bad; vendor preset: enabled) Active: active (running) since Tue 2016-07-26 01:50:00 EDT; 15s ago . . .

这也将确保Sphinx守护程序纵然在做事看重新启动时也启动。

第6步 - 测试

现在,统统都设置好了,让我们测试搜索功能。
利用MySQL接口连接到SphinxQL(在端口9306上)。
您提示将改变为mysql> 。

mysql -h0 -P9306

让我们搜索一个句子。

SELECT FROM test1 WHERE MATCH('test document'); SHOW META;

你该当得到类似下面的东西。

Output+------+----------+------------+| id | group_id | date_added |+------+----------+------------+| 1 | 1 | 1465979047 || 2 | 1 | 1465979047 |+------+----------+------------+2 rows in set (0.00 sec)+---------------+----------+| Variable_name | Value |+---------------+----------+| total | 2 || total_found | 2 || time | 0.000 || keyword[0] | test || docs[0] | 3 || hits[0] | 5 || keyword[1] | document || docs[1] | 2 || hits[1] | 2 |+---------------+----------+9 rows in set (0.00 sec)

在上述结果可以看出,Sphinx创造从我们的2场比赛test1索引我们的测试句子。
该SHOW META;命令显示以及在句子中每个关键字的点击。

让我们搜索一些关键字。

CALL KEYWORDS ('test one three', 'test1', 1);

你该当得到类似下面的东西。

Output+------+-----------+------------+------+------+| qpos | tokenized | normalized | docs | hits |+------+-----------+------------+------+------+| 1 | test | test | 3 | 5 || 2 | one | one | 1 | 2 || 3 | three | three | 0 | 0 |+------+-----------+------------+------+------+3 rows in set (0.00 sec)

在结果上面可以看到,在test1的指数,Sphinx创造:

5个匹配在3个文档中的关键字'test'2在1个文档中匹配关键字“1”0匹配0个文档中的关键字'three'

现在你可以离开MySQL shell了。

quit

结论

在本教程中,我们向您展示了如何安装Sphinx,并利用SphinxQL和MySQL进行大略搜索。

您还可以找到官方对付PHP,Perl,Python和Ruby和Java本地SphinxAPI实现 。
如果你正在利用的NodeJS,你也可以利用该SphinxAPI包 。

通过利用Sphinx,您可以轻松地添加自定义搜索到您的网站。
有关利用Sphinx的更多信息,请访问该项目的网站 。

相关文章

介绍百度码,技术革新背后的智慧之光

随着科技的飞速发展,互联网技术已经成为我们生活中不可或缺的一部分。而在这个信息爆炸的时代,如何快速、准确地获取信息,成为了人们关注...

Web前端 2025-01-03 阅读1 评论0

介绍皮箱密码,开启神秘之门的钥匙

皮箱,作为日常生活中常见的收纳工具,承载着我们的珍贵物品。面对紧闭的皮箱,许多人却束手无策。如何才能轻松打开皮箱呢?本文将为您揭秘...

Web前端 2025-01-03 阅读1 评论0

介绍盗号器,网络安全的隐忧与应对步骤

随着互联网的快速发展,网络安全问题日益突出。盗号器作为一种非法工具,对网民的个人信息安全构成了严重威胁。本文将深入剖析盗号器的原理...

Web前端 2025-01-03 阅读1 评论0