如何运行多个Sphinx实例?

4
我有一个使用sphinx的搜索引擎,现在我又想用sphinx来运行我的vbulletin论坛。唯一的问题是sphinx只允许你使用一个配置文件“sphinx.conf”,而我现在有两个配置文件必须同时使用:sphinx.conf和sphinx-vb.conf。那么,如何运行第二个searchd实例以便我可以使用sphinx-vb.conf文件呢?我需要2个实例是因为我对索引有不同的需求,并且有cron任务等等,这将使事情更容易处理。我已经在谷歌上找了很久也无法弄清楚如何运行另一个sphinx实例。我知道我还需要在另一个端口上运行,所以第二个端口号将比原始的高1,即9313。有人知道怎么做吗?谢谢。
我尝试运行以下命令: sudo /usr/local/bin/searchd --config /usr/local/etc/sphinx-vb.conf
但我得到了以下错误: FATAL: failed to lock pid file '/usr/local/var/log/searchd.pid': Resource temporarily unavailable (searchd already running?)
当然它正在运行。 它正在为搜索引擎运行。

我想我弄清楚了。如果有人看到这个并且想要做同样的事情,这似乎是对我的工作有效的方法。创建一个新目录,在该目录中创建一个新的searchd.pid文件。只需创建一个名为searchd.pid的空白文件,并使用您的配置脚本指向它,然后运行Sphinx。我不知道我是否应该这样做,但是这种方式似乎有效。我仍然愿意听取任何建议。谢谢。 - chris
Chris,我也遇到了同样的问题,你是复制了整个Sphinx目录吗? - Suleman khan
2个回答

3

Chris,正如你在问题和评论中所提到的那样 - 你需要为每个searchd进程使用不同的端口,以及不同的pid文件。不同的日志文件也可能是一个好主意 :)


2

唯一的问题是sphinx只允许使用一个配置文件“sphinx.conf”。

不,您可以根据需要使用多个配置文件。

我如何运行第二个searchd实例以便我使用sphinx-vb.conf文件?我需要2个实例的原因是我有不同的索引需求,并且有cron作业等,这将使事情更容易。

不确定您是否需要另一个实例来满足您的需求。我的意思是,对于运行sphinx-vb.conf文件,您可以在其中创建不同的源,并使用同一个实例运行两个配置进行索引:

1 * * * * indexer --config /etc/sphinxsearch/sphinx.conf --all --rotate
* 2 * * * indexer --config /etc/sphinxsearch/sphinx-vb.conf --all --rotate

然后在相同的端口和连接上运行它,但对不同的数据源进行查询。例如,使用 sphinxapi.php

$sphinx->SetServer( "localhost", 9312 );
$result1 = $sphinx->Query('','firstSource');
...
$result1 = $sphinx->Query('','sourceVb');

但是 MySQL 实例怎么办呢?目前我的两个独立的 Sphinx 实例因为写入同一个数据库而发生冲突!(索引名称相同) - Paul Preibisch
您可以在配置文件中设置索引名称。 - slava
我的意思是,您可以在_sphinx.conf_中使用index my_first_sphinx_index,并在_sphinx1.conf_中使用index my_first_sphinx_index1,但在这种情况下,我建议在另一个端口上运行另一个sphinx实例以供_sphinx1.conf_使用。 - slava
@DonaldF,我知道我可以给索引命名不同的名称,但这是唯一的方法吗?例如:我们不能连接到mysql:9304,然后连接到mysql:9306吗? - Paul Preibisch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接