2014-07-30 3 views
1

У меня Sphinx установлена ​​на моей машине развития, а также мое производство разъединяет, так что мой sphinx.conf имеет такие вещи, как это:Возможно ли иметь оператор IF в файле sphinx.conf?

source source_config 
{ 
    #LIVE 
    // live server credentials 

    #DEV 
    // development machine credentials 
} 

Так что я должен держать один набор учетных данных и путь к файлам (разбросан по всему файл conf) прокомментировал.

Есть ли способ иметь оператор IF в файле sphinx.conf, чтобы он мог автоматически выбирать, какой набор учетных данных и путей к файлу использовать?

ответ

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 = ... 
} 

Пример также показывает Наследование, так что только нужно иметь один общий блок источника.

+0

Очень интересно, я попробую! – Nate

1

Невозможно. Как правило, вы должны использовать разные confs. Один из подходов заключается в использовании языка более высокого уровня, например. Python или PHP для создания conf.

Я использую Sphinx в Django (Python), а также имел эту проблему. Решил его с помощью реализации Python, которая выводит файл .conf. См. here.

Смежные вопросы