Привязка sphinx через XML к любому источнику


sphinx хорош тем, что его легко прикрутить к любому источнику данных. Для этого используется XML.
На первом этапе нужно сделать некий индексатор, который умеет выгружать данные в XML из вашего
источника данных. XML должен получиться таким (у меня этот XML генерится с помощью скрипта xml.generator.php):

<?xml version="1.0" encoding="utf-8"?>
<sphinx:docset xmlns:sphinx="http://mysite.ru/sphinx">
  <sphinx:document id="1">
    <video_id>10306</video_id>
      <video_name><![CDATA[На краю]]></video_name>
      <video_artist><![CDATA[Панайотов Александр]]></video_artist>
  </sphinx:document>
  <sphinx:document id="2">
    <video_id>10306</video_id>
    <video_name><![CDATA[Na krayu]]></video_name>
    <video_artist><![CDATA[Panajotov Aleksandr]]></video_artist>
  </sphinx:document>
  <sphinx:document id="3">
    <video_id>1034</video_id>
    <video_name><![CDATA[А я выла на луну]]></video_name>
    <video_artist><![CDATA[Балаган Лимитед]]></video_artist>
  </sphinx:document>
  <sphinx:document id="4">
    <video_id>1034</video_id>
    <video_name><![CDATA[A ya vyla na lunu]]></video_name>
    <video_artist><![CDATA[Balagan Limited]]></video_artist>
  </sphinx:document>
</sphinx:docset>

Примечание: необходимо добавить аттрибут xmlns:sphinx - без него не заработало.

Внимательные могут заметить, что в индекс я помещаю также транслитерацию - 
чтоб и в транслитерации искало хорошо.

Дальше в конфигах необходимо изобразить следующий источник и индекс:

index:

index idx_video
{
        type                    = plain
        source                  = src_video
        path                    = /var/lib/sphinx/data/video_idx.dat
        docinfo                 = extern
        dict                    = keywords
        .........
}

source:

source src_video
{
        type            = xmlpipe2
        xmlpipe_command = php -e /my/super/web/app/xml.generator.php
        xmlpipe_attr_uint       = video_id
        xmlpipe_field           = video_name
        xmlpipe_field           = video_artist
        xmlpipe_fixup_utf8    = 1
}

И - все готово! Нюансы настройки сфинкса, выбора алгоритма поиска, использования языка запросов - здесь я 
опускаю, т.к. это совсем другая и обширная тема.

# indexer --all --rotate

Напомню, что на этом сайте есть прекрасный рецепт, как разбивать конфиг сфинкса по файлам - это очень 
удобно. Успехов!