Добрый день.
Пытаюсь внедрить в приложение дельта-индексы.
Изначально был такой конфиг:
index search_content {
# config
}
Запросы к нему шли типа
SELECT * FROM search_content WHERE MATCH('@(header, body) "test"');
Потом добавил дельту:
index search_content {
# config
}
index search_content_delta : search_content {
# config
}
Теперь чтобы искать в полном индексе (основной + дельта), нужно искать по обоим индексам сразу:
SELECT * FROM search_content, search_content_delta WHERE MATCH('@(header, body) "test"');
Но чтобы облегчить себе задачу и ради этого не добавлять в коде приложения в запросы название дельта индекса, переименовал основной индекс, сделал составной индекс из основного и дельта-индекса и назвал его как старый основной индекс - search_content:
index search_content_main {
# config
}
index search_content_delta : search_content_main {
# config
}
index search_content {
local = search_content_main
local = search_content_delta
}
Теперь, при том, что запросы к сфинксу остались без изменений
SELECT * FROM search_content WHERE MATCH('@(header, body) "test"');
сфинкс отлично возвращает данные из обоих индексов за один запрос: основного и дельты.
Однако по попытке составить сниппеты через CALL SNIPPETS из этого составного индекса, сфинкс ругается:
[1064] The distributed index for snippets must have exactly one local agent [ CALL SNIPPETS(('test string text'), 'search_content', 'test' ,'<b>' as `before_match`,'</b>' as `after_match`)]
Судя по всему, составные индексы из нескольких локальных индексов в сниппетах не поддерживаются.
Перечислить в CALL SNIPPETS индексы через запятую тоже выдает ошибку, синтаксис не позволяет.
В документации я найти что-то по этой теме не смог.
Собственно вопрос: можно ли составлять сниппеты одним запросом из основного и дельта индекса? Неважно, через составные индексы или еще как.