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

是否可以在sphinx.conf中使用IF语句?,sphinx,Sphinx,我的开发机器和生产服务器上都安装了Sphinx,因此我的Sphinx.conf有如下内容: source source_config { #LIVE // live server credentials #DEV // development machine credentials } 因此,我必须保留一组凭证和文件路径(分散在整个conf文件中)注释掉 有没有办法在sphinx.conf中有一个IF语句,这样它就可以自动选择使用哪一组凭据和文件路径?在lin

我的开发机器和生产服务器上都安装了Sphinx,因此我的Sphinx.conf有如下内容:

source source_config
{
    #LIVE
    // live server credentials

    #DEV
    // development machine credentials
}
因此,我必须保留一组凭证和文件路径(分散在整个conf文件中)注释掉


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

在linux服务器上,至少配置文件可以是一个可执行的脚本,例如PHP/perl等,使用“shebang”语法


#/usr/bin/php
源数据库详细信息{
sql_host=db1.domain.com
sql\u host=localhost
sql\u用户=。。。
}
来源index1:dbdetails{
#无需在此处重复从主源继承的sql_主机
sql\u查询=。。。
}


该示例还显示了继承性,所以只需要有一个公共源块

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


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

很有趣,我来试试看!
#!/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 = ...
}