В сфинксе (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
Важное на сайте:
- Средний курс доллара в 2010 году составит 29 рублей
- Стоит ли инвестировать в недвижимость
- Стоит ли пользоваться услугами кредитных брокеров
- Стратегия маркетинга
- Стратегия организации
Самые интересные результаты статей, подобранные именно по Вашим интересам:
-
Какой должен быть индекс массы тела
Получай с нами! Не оставляя главного места работы либо учебы. Каким должен быть обычный вес человека? Создатель: Будем здоровы Добавлено: 2010-02-09…
-
К ак определить индекс массы тела? Контроль над собственным весом – дар, дешёвый далеко не каждому. Тот, кто сумел овладеть данным мастерством,…
-
Что такое индекс на банковской карте
Разбираемся с индексами на базе битовых карт Джонатан Льюис (Jonathan Lewis) Индексы на базе битовых карт — великое благо для некоторых видов приложений,…
-
Индекс потребительских цен (consumer price index (cpi))
Фактически постоянно сокращается до CPI, еще одно сокращение — Core CPI — используется для так именуемого чистого индекса, что не включает в себя эти по…
-
Индекс массы тела для женщин — какая норма и как рассчитать?
Неприятность избыточного веса остро стоит во всем мире. Лишь с одной стороны отсутствие лишних килограммов — это привлекательность и красивая фигура….
-
Гликемический индекс продуктов. секреты, которые помогут вам снизить ги
Гликемический индекс – это показатель, определяющий скорость расщепления того либо иного продукта до глюкозы – главного источника энергии. ГИ показывает,…