这是Raja,我正在使用PHP进行网络开发。最近我应该用LINUX作为操作系统将“Sphinx”搜索安装到我的应用程序中。
我已按照本网站提供的说明进行操作
http://www.howtoforge.com/how-to-install-sphinx-on-ubuntu-10.10
在LINUX(Ubuntu)操作系统中安装sphinx,我在终端测试了应用程序,我得到了这样的结果
root@dev2:/# search "test"
Sphinx 0.9.9-release (r2117)
Copyright (c) 2001-2009, Andrew Aksyonoff
using config file '/etc/sphinxsearch/sphinx.conf'...
index 'test1': query 'test ': returned 3 matches of 3 total in 0.000 sec
displaying matches:
1. document=1, weight=2, group_id=1, date_added=Thu Jan 5 18:18:55 2012
id=1
group_id=1
group_id2=5
date_added=2012-01-05 18:18:55
title=test one
content=this is my test document number one. also checking search within phrases.
2. document=2, weight=2, group_id=1, date_added=Thu Jan 5 18:18:55 2012
id=2
group_id=1
group_id2=6
date_added=2012-01-05 18:18:55
title=test two
content=this is my test document number two
3. document=4, weight=1, group_id=2, date_added=Thu Jan 5 18:18:55 2012
id=4
group_id=2
group_id2=8
date_added=2012-01-05 18:18:55
title=doc number four
content=this is to test groups
words:
1. 'test': 3 documents, 5 hits
问题是,我在“/ var / www / sphinx_search”位置创建了目录,其中包含sphinx.conf,sphinxapi.php和test.php文件。
sphinx.conf背后的代码是
source src1
{
type = mysql
sql_host = localhost
sql_user = user
sql_pass = pwd
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
sql_query_info = SELECT * FROM documents WHERE id=$id
}
index test1
{
source = src1
path = /var/lib/sphinxsearch/data/test1
docinfo = extern
charset_type = sbcs
}
indexer
{
mem_limit = 32M
}
searchd
{
port = 9312
log = /var/log/sphinxsearch/searchd.log
query_log = /var/log/sphinxsearch/query.log
read_timeout = 5
max_children = 30
pid_file = /var/run/searchd.pid
max_matches = 1000
seamless_rotate = 1
preopen_indexes = 0
unlink_old = 1
}
和test.php背后的代码是
require_once('sphinxapi.php');
//require_once('api/sphinxapi.php');
$s = new SphinxClient;
$s->setServer("123.123.123.123", 9312); // NOT "localhost" under Windows 7!
$s->setMatchMode(SPH_MATCH_EXTENDED2);
$result = $s->Query("group");
echo '<pre>';print_r($result);
当我尝试在浏览器中运行此应用程序(http:// localhost / Raja / search_engine / sphinx /)时,会显示此错误。
{"status":"failed","status_message":"connection to localhost:9312 failed (errno=10060, msg=A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.)"}
由于我是狮身人面像的新手,我无法马上得到它。任何人都可以帮助我继续前进。
早先好奇地寻找解决方案,
先谢谢, 拉加。
答案 0 :(得分:3)
在您使用搜索实用程序搜索的示例中,您不需要运行searchd守护程序。这就是搜索成功执行的原因。
要使用sphinx API,您需要启动searchd守护程序,例如:
/path/to/searchd --config /etc/sphinxsearch/sphinx.conf
如果您使用apt-get安装了sphinx,请尝试:
searchd --config /etc/sphinxsearch/sphinx.conf
之后,您可以在浏览器中尝试应用程序。
但是,我不明白这个
$s->setServer("123.123.123.123", 9312); // NOT "localhost" under Windows 7!
你说你在ubuntu下运行sphinx,而不是windows 7.因此,sphinx服务器IP应该是ubuntu主机的IP,而不是localhost。
BTW,ubuntu发布旧版Sphinx,我建议从sphinxsearch.com下载最新版本。最新版本为2.0.3答案 1 :(得分:2)
将setServer()更改为此
$s->SetServer('localhost', 'mysql_user_name', 'mysql_password', 3312);
并在sphinx.conf中将端口设置为3312
port = 3312
我觉得这可能适合你。如果没有告诉我发生了什么。