使用Sphinx与PHP和MySQL的指南

Jul*_*lio 26 php mysql search sphinx

我正在寻找使用Sphinx与PHP和MySQL的完整指南.我想要一个比网站上提供的更简单,更随和的一个.

我正在寻找一些关于它是如何工作的概念.

我有一个PHP,HTML,其他数据和MySQL数据库的服务器.我将如何设置Sphinx以支持搜索并返回结果?

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

PS我也对Sphinx的任何其他替代品提出建议.

Iho*_*nko 11

我遇到过这篇文章,但没有找到我想看到的答案.这是我的快速入门指南:

1.安装Sphinx

在Mac上使用Homebrew:

brew install sphinx
Run Code Online (Sandbox Code Playgroud)

在Amazon Linux(CentOS)上使用yum:

yum install sphinx
Run Code Online (Sandbox Code Playgroud)

2.创建Sphinx配置

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

在使用Homebrew安装的Mac上:

/usr/local/Cellar/sphinx/<sphinx version>/etc
Run Code Online (Sandbox Code Playgroud)

在安装了yum的Amazon Linux上:

/etc/sphinx
Run Code Online (Sandbox Code Playgroud)

它非常简单,但可能包含太多新手设置.在这种情况下,您可以使用这个简单的配置:

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
}
Run Code Online (Sandbox Code Playgroud)

我将max_matches设置添加到此配置中,因为我得到所有工作后的第一个问题是"为什么我总是只获得20个搜索结果?".使用max_matches,您可以设置搜索结果编号的限制.

3.使用索引器创建索引

indexer --all
Run Code Online (Sandbox Code Playgroud)

4.运行Sphinx守护程序

sudo searchd -c /path/to/config/sphinx.conf
Run Code Online (Sandbox Code Playgroud)

5.安装PHP Sphinx扩展

在Mac上使用Homebrew:

brew install homebrew/php/php56-sphinx
Run Code Online (Sandbox Code Playgroud)

在Amazon Linux上使用yum:

yum install libsphinxclient
pecl install sphinx
Run Code Online (Sandbox Code Playgroud)

6.从PHP查询索引

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

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

print_r($result);
Run Code Online (Sandbox Code Playgroud)

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

$index->getLastError();
Run Code Online (Sandbox Code Playgroud)

7.保持最新指数

要维护最新索引,您可以使用两个索引:

  1. 主要索引,不经常更新(每周一次,每月一次等)
  2. 和delta索引,经常更新(每小时,5分钟等)

每次delta索引重新编制索引时,它都会与主索引合并

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

我觉得有用的链接:


Ric*_*ham 3

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

a) 下载并安装非常简单

b)创建您的第一个索引 - 您需要一个源,一个给定配置非常好的位置,记住您可以使用主要源来配置所有主要区域,然后其他源从中衍生出来。每个源都应以主键开头,我发现最好执行 key_id AS id

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

d) 启动 sphinx 的搜索恶魔 - searchd 这是 php 将连接到的内容以及它如何获取结果的方式。

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

f) 进行增量更新。

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