是否可以在sphinx.conf中使用IF语句?

时间:2014-07-30 14:30:19

标签: sphinx

我的开发机器和生产服务器上安装了Sphinx,所以我的sphinx.conf有这样的东西:

source source_config
{
    #LIVE
    // live server credentials

    #DEV
    // development machine credentials
}

所以我必须保留一组凭据和文件路径(分散在整个conf文件中)注释掉。

有没有办法在sphinx.conf中有一个IF语句,以便它可以自动选择要使用哪组凭据和文件路径?

2 个答案:

答案 0 :(得分:2)

在Linux服务器上,至少配置文件可以是一个可执行的脚本,例如PHP / perl等,使用'shebang'语法。 http://en.wikipedia.org/wiki/Shebang_(Unix)


#!/usr/bin/php

source dbdetails {
    <?php if (trim(`hostname`) == 'liveserver') { ?>
        sql_host = db1.domain.com
    <?php } else { ?>
        sql_host = localhost
    <?php } ?>
    sql_user = ...
}

source index1 : dbdetails {
    # no need to repeat sql_host here, as inheritied from master source
    sql_query = ...
}

示例还显示了inheritence,因此只需要有一个公共源块。

答案 1 :(得分:1)

这是不可能的。通常,您必须使用不同的confs。一种方法是使用更高级别的语言,例如。用Python或PHP构建conf。

我在Django(Python)中使用Sphinx,也遇到了这个问题。使用输出.conf文件的Python实现解决了它。参见例如here