Sphinx: обновляйте индексы. Индекс в реальном времени и обновление индекса в реальном времени

Я действительно не знаю, в чем разница между ними, поэтому я не знаю, что мне нужно для обновления моих индексов на лету, когда в базу данных вносятся изменения. Вот чего я хочу: поддерживать функцию поиска в актуальном состоянии до последнего изменения. Кто-нибудь может мне помочь?

Если это помогает, я использую MySQL для настойчивости и PHP для использования API.


person Carlos    schedule 24.10.2012    source источник
comment
Я в той же ситуации, я начну реализовывать, как объясняется в следующей статье sphinx; sphinxsearch.com/docs/1.10/delta-updates.html   -  person directory    schedule 25.10.2012
comment
Спасибо @ user968898! Я читал его вчера, но не мог понять, как именно он работает. Скажите, пожалуйста, достигаются ли живые обновления.   -  person Carlos    schedule 25.10.2012
comment
Я расскажу о реализации сегодня, если вам нужно объяснение. Я получил msn nicky [@] omerta.min.nu   -  person directory    schedule 25.10.2012
comment
У меня нет MSN, но все равно спасибо!   -  person Carlos    schedule 25.10.2012
comment
Я получил работу. Принцип заключается в том, что main является родительским индексом, а дельта - дочерним. Эти двое работают вместе. Main создает огромный индекс, а Delta - небольшой индекс только с новыми записями. С таблицей MySql, которую вам нужно создать, вы позаботитесь о последнем идентификаторе, проиндексированном основным индексом. Дельта выполняет поиск в этой таблице MySql, чтобы увидеть, откуда ей нужно получить новые записи (если идентификатор больше, чем последний, это новый документ). С помощью cmd вы можете запустить индексатор для слияния main + delta, а delta очистит его индекс (удалит документы, добавленные в основной индекс), чтобы он оставался быстрым и маленьким. Чисто?   -  person directory    schedule 26.10.2012
comment
Звучит отлично! :) Это работает и для ОБНОВЛЕНИЙ и УДАЛЕНИЙ?   -  person Carlos    schedule 26.10.2012
comment
Да, он должен работать и для этого! Сам еще не делал этого, но вот вам некоторая информация; sphinxsearch.com/docs/manual-0.9.9. html # conf-sql-query-killlist :)   -  person directory    schedule 26.10.2012
comment
Прохладный! Если вы поставите это как ответ, я приму это. Большое тебе спасибо :)   -  person Carlos    schedule 26.10.2012
comment
Спасибо чувак! Надеюсь, это вам поможет. :)   -  person directory    schedule 26.10.2012


Ответы (1)


Принцип заключается в том, что main является родительским индексом, а дельта - дочерним. Эти двое работают вместе.

Main создает огромный индекс, а Delta - небольшой индекс только с новыми записями. С таблицей MySql, которую вам нужно создать, вы позаботитесь о последнем идентификаторе, проиндексированном основным индексом.

Дельта выполняет поиск в этой таблице MySql, чтобы увидеть, откуда ей нужно получить новые записи (если идентификатор больше, чем последний, это новый документ). С помощью командной строки вы можете запустить индексатор, чтобы объединить основной + дельта, и дельта очистит его индекс (удалит документы, которые добавлены в основной индекс), чтобы он оставался быстрым и маленьким.

Основная дельта-схема может обрабатывать (почти в реальном времени) INSERT, UPDATE и DELETE.

person directory    schedule 26.10.2012