我的开发机器和生产服务器上安装了Sphinx,所以我的sphinx.conf有这样的东西:
source source_config
{
#LIVE
// live server credentials
#DEV
// development machine credentials
}
所以我必须保留一组凭据和文件路径(分散在整个conf文件中)注释掉。
有没有办法在sphinx.conf中有一个IF语句,以便它可以自动选择要使用哪组凭据和文件路径?
答案 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