Известны два метода проектирования – «сверху вниз» и «снизу вверх».
Похоже, я снова пытаюсь изобрести велосипед, пойти третьим путем – от середины.
Поскольку лично меня на данный момент больше интересует «частная производная» поиска, а именно поиск на отдельном сайте (группе сайтов, сгруппированных в один блок), я пойду в этом направлении.
Помимо самого поиска, существует еще проблема обновления индекса.
Например, коллеги установили поисковую систему www.sphinxsearch.com «> Сфинкс.
Одной из проблем, с которой они столкнулись, была невозможность оперативного обновления основного индекса, что недопустимо для сайта СМИ.
Вылезли из этого перебором по нескольким индексам (Sphinx это позволяет).
В течение дня при публикации очередной статьи заново собирался индекс текущего дня.
За неделю накопилось 7 таких индексов, а в выходные, когда нагрузка на сервер падала, основной индекс перестраивался с учетом накопленного.
И так по кругу.
Такая жесткость индекса была сделана для ускорения процесса поиска.
За все нужно платить.
Я слышал, что разработчик Sphinx уже решает (или даже решил) эту проблему.
Теперь можно комбинировать индексы, избегая регенерации на основе исходных данных.
Тем самым он показал (за что огромное спасибо) грабли, на которые можно наступить (одни из них).
Подобные сведения о ожидающих разработки технологических граблях не менее ценны, чем все рукописи по теории поиска.
Ведь самые большие трудности начинаются тогда, когда пытаешься перенести теорию на практику.
Фу! Много слов.
Но если не здесь, то в комментариях мне все равно пришлось бы объяснять причины своих решений.
Я хочу разделить базовый индекс на три параллельных:
- основной индекс;
- индекс «вчера»
- индекс «сегодня»
Сегодняшний индекс - все обновления текущего дня.
После полуночи «сегодня» становится «вчера» и уступает место новому дню.
В течение суток происходит слияние основного индекса и «вчерашнего», после чего вчерашний удаляется, а основной заменяется результатом объединения.
Это минимизирует затраты на поддержание индекса в актуальном состоянии.
При работе в обычном режиме поисковика (когда данные обновляются по мере очереди сканирования сайта) «вчерашний» индекс не нужен, а «сегодняшний» формируется на основе свежих поступлений, тогда мы считаем, что он полночь и действуйте по тому же алгоритму.
ПС.
Google уже работает над технологией мгновенного индексирования обновлений контента сайта — ПабSubHubbub .
Я не думаю, что при получении следующей партии обновлений весь индекс будет перестроен; скорее всего, новости будут накапливаться в каком-то буферном индексе, доступном параллельно с основным.
Поисковые системы уже давно могут протестировать подобные технологии при поиске новостей.
Теперь пришло время распространить их на весь контент. Теги: #структуры данных #поиск #Чулан #быстрое индексирование
-
Хабрачат Или Использование Arm-Сервера
19 Oct, 24