将 Sphinx 与 PHP 和 MySQL 一起使用的指南
Posted
技术标签:
【中文标题】将 Sphinx 与 PHP 和 MySQL 一起使用的指南【英文标题】:Guide to using Sphinx with PHP and MySQL 【发布时间】:2011-06-29 12:43:24 【问题描述】:我正在寻找将 Sphinx 与 php 和 mysql 结合使用的完整指南。我想要一个比网站上提供的更简单和随和的。
我正在寻找一些关于这一切如何运作的概念。
我有一个带有 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详细介绍