Sphinxsearch — объединение индексов (index merging)

Sphinxsearch - объединение индексов (index merging)

В сфинксе (sphinx-search) существует весьма хорошее ответ для оптимизации процесса индексации. Сущность решения рассмотрена в статье Дельта индекс в Sphinx. Дельта индексы значительно снижают ресурсоемкость постоянной переиндексации, разрешая делать ее чаще и иметь более актуальные данные в результатах поиска.

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

Существует второе ответ для обновления главного индекса, которое может сэкономить множество ресурсов — объединение индексов (index merging).

Что такое index merging?

У индексатора сфинкса имеется возможность объединять два индекса в один. Во многих случаях это намного действеннее, чем полная переиндексация. В этом случае не нагружается сам источник данных (СУБД — выборки для индексации в большинстве случаев тяжелые, т.к. содержат огромные количества данных).

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

Как пользоваться?

Индексатор имеет опцию объединения идексов:

  • DSTINDEX — главный индекс, что будет обновлен по окончании операции объединения
  • SRCINDEX — индекс, содержимое которого будет объеденено

    с главным (сам индекс не изменится) — дельта индекс

К примеру: Атрибуты документов малого (дельта) индекса перезапишут атрибуты главного, в случае если на протяжении объединения встретятся однообразные документы.

Процесс объединения подразумевает добавление новых текстовых ключей к ветхим. Допустим У вас определенный документ по большей части индексе был по ключу ветхий, а в дельта индексе находится по ключу новый. По окончании объединения данный документ будет дешёв и по ключу ветхий, и по ключу новый.

В случае если нужно удалять (либо обновлять) ветхие документы, нужно фильтры объединения:

обновление и Удаление документов по большей части индексе

В случае если возникла реальная необходимость удалить невалидные документы из главного индекса, то нужно воспользоваться опцией —merge-dst-range: Эта опция разрешает наложить фильтр на индекс назначения, т.е. главный индекс, и убрать из него конкретные документы. К примеру, дабы убрать из индекса удаленные документы, возможно отфильтровать их по атрибуту deleted: В этом случае в новый индекс войдут лишь документы, имеющие значение атрибута deleted = 0. Внимание! атрибут deleted — это пользовательский атрибут, т.е. его необходимо создать руками при описании индекса: Обновление атрибутов документов нужно делать синхронно с удалением самого документа. Чтобы обновить атрибуты документа в индексе нужно применять способ UpdateAttributes() клиентского API.

Для обновления документов по большей части индексе возможно применять тот же подход: устанавливаете атрибут updated_on (что, к примеру, показывает дату обновления в unix_timestamp). При объединении индексов устанавливаете фильтр, что выкинет из главного индекса все обновленные документы, к примеру: Тут 12345345 — это большая дата обновления документа на момент последнего объединения (либо создания) главного индекса. Т.е. в него не войдут документы, обновлявшиеся по окончании данной даты.

Конечно, все обновленные документы должны входить в дельта индекс.

Источник: ruhighload.com

Marching to Zion Full Movie with subtitles

Важное на сайте:

Самые интересные результаты статей, подобранные именно по Вашим интересам: