将 Sphinx 与 PHP 和 MySQL 一起使用的指南

Posted

技术标签:

【中文标题】将 Sphinx 与 PHP 和 MySQL 一起使用的指南【英文标题】:Guide to using Sphinx with PHP and MySQL 【发布时间】:2011-06-29 12:43:24 【问题描述】:

我正在寻找将 Sphinx 与 phpmysql 结合使用的完整指南。我想要一个比网站上提供的更简单和随和的。

我正在寻找一些关于这一切如何运作的概念。

我有一个带有 PHP、html、其他数据和 MySQL 数据库的服务器。我将如何设置 Sphinx 来支持搜索和返回的结果?

我希望能够将我的搜索词传递给我的 PHP 脚本,让它处理 Sphinx 并返回数据。

附:我也愿意就 Sphinx 的任何其他替代品提出建议。

【问题讨论】:

【参考方案1】:

我看到了这篇文章,但没有找到我想看到的答案。所以这是我的快速入门指南:

1.安装狮身人面像

在带有 Homebrew 的 Mac 上:

brew install sphinx

在带有 yum 的 Amazon Linux (CentOS) 上:

yum install sphinx

2。创建 Sphinx 配置

Sphinx 带有配置模板。在 configs 目录中查找 sphinx.conf.dist:

在安装 Homebrew 的 Mac 上:

/usr/local/Cellar/sphinx/<sphinx version>/etc

在安装了 yum 的 Amazon Linux 上:

/etc/sphinx

这很简单,但对于新手来说可能包含太多设置。在这种情况下,您可以使用这个简单的配置:

source TestSource 
    type = mysql
    sql_host = <host>
    sql_user = <user>
    sql_pass = <password>
    sql_db = <db>

    sql_query_range = select min(id), max(id) from TestTable
    sql_range_step = 2048

    sql_query = select id, some_info from TestTable\
        where id >= $start and id <= $end


index TestIndex 
    source = TestSource
    path = /var/lib/sphinx/test-index
    min_word_len = 3
    min_infix_len = 3


searchd 
    log = /var/log/sphinx/searchd.log
    query_log = /var/log/sphinx/query.log
    pid_file = /var/run/searchd.pid

    max_matches = 200

    listen = localhost:9312

我在此配置中添加了 max_matches 设置,因为我在一切正常后的第一个问题是“为什么我总是只得到 20 个搜索结果?”。使用 max_matches 您可以设置搜索结果数量的限制。

3.使用索引器创建索引

indexer --all

4.运行 Sphinx 守护进程

sudo searchd -c /path/to/config/sphinx.conf

5.安装 PHP Sphinx 扩展

在带有 Homebrew 的 Mac 上:

brew install homebrew/php/php56-sphinx

在带有 yum 的 Amazon Linux 上:

yum install libsphinxclient
pecl install sphinx

6.从 PHP 查询您的索引

$index = new SphinxClient();
$index->setServer("127.0.0.1", 9312);

$result = $index->query('some search term', 'TestIndex');

print_r($result);

如果出现任何错误,您可以通过以下方法获取更多信息:

$index->getLastError();

7.及时更新索引

要保持最新的索引,您可以使用两个索引:

    主索引,不经常更新(每周一次、每月一次等) 还有 delta 索引,它经常更新(每小时、5 分钟等)

每次重新索引增量索引时,它都会与主索引合并

点击此链接http://www.sphinxconsultant.com/sphinx-search-delta-indexing/ 了解有关此方法的更多信息。

我发现有用的链接:

http://sphinxsearch.com/docs/current.html http://sphinxsearch.com/info/faq/ http://atlchris.com/1996/working-with-sphinx-search-engine-on-a-lamp-linux-apache-mysql-and-php-stack-server/ http://www.sphinxconsultant.com/sphinx-search-delta-indexing/ https://github.com/schmittjoh/php-stubs/tree/master/res/php/sphinx

【讨论】:

【参考方案2】:

我不太确定一个好的指南,但这是我的步骤。

a) 下载和安装非常简单

b) 建立你的第一个索引 - 你需要一个给定配置非常好的位置的来源,记住你可以使用主要来源来配置所有主要区域,然后其他来源由此产生。每个来源都应该以主键开头,我发现做 key_id AS id 效果最好

c) 使用搜索测试您的索引

d) 开始搜索 sphinx - searchd 这是 php 将连接的内容以及获取结果的方式。

e) 创建一个搜索所有索引的函数,传入您要搜索的索引,它将返回与您的搜索匹配的数组中的 id

f) 进行增量和更新。

工作完成 - sphinx 论坛非常好,如果您需要任何帮助,应该会为您提供帮助。 理查德

【讨论】:

这是“守护进程”而不是“恶魔”:)【参考方案3】:

看看 Search Engine Extensions 在 php.net:http://php.net/manual/en/refs.search.php。

【讨论】:

【参考方案4】:

http://play.manticoresearch.com/ 是一组互动课程,将引导您了解人们在使用 Sphinx/Manticore 时遇到的不同任务以及如何解决这些问题。

【讨论】:

以上是关于将 Sphinx 与 PHP 和 MySQL 一起使用的指南的主要内容,如果未能解决你的问题,请参考以下文章

整理Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)

windows7使用Sphinx+PHP+MySQL详细介绍

Sphinx 安装与使用

php_sphinx安装使用

php+中文分词scws+sphinx+mysql打造千万级数据全文搜索

Sphinx 死文克斯 联合Mysql实现中文全文索引