Похоже, что индекс SPhinx Real Time может подойти.http://sphinxsearch.com/docs/current.html#rt-indexes
Вы можете просто отправлять обновления для определенных документов, а не перестраивать весь индекс, чтобы обновить несколько документов.
Но вы можете обновить только все поля в документе.Невозможно просто обновить d.col1
для большого количества документов, потребуется предоставить все данные для всех полей (и атрибутов) для всех затронутых документов.
Однако вы можете просто обновить выбранные атрибуты документов, не касаясь полей и / или других атрибутов.
Другая идея состоит в том, чтобы вместо одного большого индекса разбить его на биты, то есть «осколить» индекс.Вы даже можете использовать распределенный индекс, чтобы упростить запрос всех фрагментов одновременно.(т. е. для приложения, в котором он видит только один индекс, вам не нужно вручную искать отдельные шарды) http://sphinxsearch.com/files/tutorials/sphinx_config_tips_and_tricks.pdf
... таким образом можно обновлять шарды по мере поступления.Т.е. вместо одного «10-минутного» запроса, разделите его на 4 фрагмента и получите гораздо меньшие обновления.(ранжированные запросы могут даже использоваться для разбиения на множество небольших запросов, а не на один 2,5-минутный запрос) http://sphinxsearch.com/docs/current.html#ranged-queries