Pull to refresh
0
0
Send message

Поисковый движок в 80 строках Python

Reading time11 min
Views12K

В сентябре я устроился на должность поискового дата-саентиста и с тех пор часть моих обязанностей заключается в работе с Solr — опенсорсным поисковым движком на основе Lucene. Я знал основы работы поискового движка, но мне хотелось понять его ещё лучше. Поэтому я закатал рукава и решил создать его с нуля.

Давайте поговорим о целях. Слышали когда-нибудь о «кризисе сложности обнаружения маленьких веб-сайтов»? Проблема в том. что маленькие веб-сайты наподобие моего невозможно найти при помощи Google или любого другого поискового движка. Какова же моя миссия? Сделать эти крошечные веб-сайты снова великими. Я верю в возвращение славы этих малышей вдали от SEO-безумия Google.

В этом посте я подробно расскажу о процессе создания поискового движка с нуля на Python. Как обычно, весь написанный мной код можно найти в моём GitHub (репозиторий microsearch). Эта реализация не будет притворяться готовым к продакшену поисковым движком, это лишь полезный пример, демонстрирующий внутреннюю работу поискового движка.

Кроме того, мне стоит признаться, что в заголовке поста я слегка преувеличил. Да, поисковый движок действительно реализован примерно в 80 строках Python, но я ещё и писал вспомогательный код (краулер данных, API, HTML-шаблоны и так далее), из-за которого весь проект становится немного больше. Однако я считаю, что интересная часть проекта находится в поисковом движке, который состоит из менее чем 80 строк.

P.S. Написав этот пост и microsearch, я осознал, что пару лет назад нечто похожее написал Барт де Гёде. Моя реализация очень похожа на работу Барта, но я считаю что кое-что улучшил, в частности: (1) мой краулер асинхронный, что сильно ускоряет работу, (2) я реализовал пользовательский интерфейс, позволяющий взаимодействовать с поисковым движком.

Читать далее
Total votes 29: ↑29 and ↓0+29
Comments5

Как проводить A/B-тестирование на 15 000 офлайн-магазинах

Reading time10 min
Views25K
Привет! На связи команда Ad-hoc аналитики Big Data из X5 Retail Group.

В этой статье мы расскажем о нашей методологии A/B-тестирования и сложностях, с которыми мы ежедневно сталкиваемся.

В Big Data Х5 работает около 200 человек, среди которых 70 дата сайентистов и дата аналитиков. Основная наша часть занимается конкретными продуктами – спросом, ассортиментом, промо-кампаниями и т.д. Помимо них, есть наша отдельная команда Ad-hoc аналитики.


Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments13

Как найти показатель степени двойки за O(1) с помощью последовательности де Брёйна

Reading time2 min
Views29K

Аперитив


Всем, наверное, известно, как посчитать количество бит в числе. Например, подойдут следующие два способа:
while (n)
{
    ++count;
    n &= (n-1);
}

while (n)
{
    if (n&1)
        ++count;
    n >>= 1;
}

Упражнение: какое в среднем количество операций будет выполнено в первой и во второй реализации?

Блюдо


Пусть у нас есть n-битное число вида 2^i. Нам необходимо найти i за O(1).
Как это сделать? Пусть n = 2^k. Построим последовательность де Брёйна (de Bruijn) над алфавитом {0,1} для подстрок длины k.

Что такое последовательность де Брёйна?

Читать дальше →
Total votes 60: ↑52 and ↓8+44
Comments49

Лучшие платные Photoshop плагины для веб-дизайнеров

Reading time3 min
Views31K
Привет, Хабр! Относительно недавно я опубликовал "Лучшие бесплатные Photoshop плагины для веб-дизайнеров". В подборке я попытался собрать все известные мне инструменты, которые значительно помогают в работе. Кстати, по возможности я ее обновляю и несколько дней назад добавил Velositey для построения лэйаутов. Таким образом мне хочется сделать «конкретное местечко» где будут храниться удобные для работы с фотошопом штуки. Аналогично не только поста ради, мне хочется собрать и платные инструменты, которые реально окупятся через «несколько» человеко часов. Некоторыми из них я пользуюсь сам.

PNG HAT $39.99



Сей замечательный плагин от достаточно известной компании Source «символизирует» лучший способ того, как должна происходить нарезка слоев. Принцип «в один клик», которые значительно сокращает потраченное время на экспорт слоев наглядно продемонстрирован в видео выше. Что еще есть внутри: мощная оптимизация с помощью PNG Crush, PNG quant и opti PNG, которая по заявлению разработчиков в разы эффективнее стандартного способа; Base64 encoding; код на изображение копируется в буффер для HTML, CSS или Obj C; масштабирование, что очень удобно в связи с необходимостью разработки дизайна под Retina дисплеи; и даже облако объемом 1GB для хранения изображений.

Говоря про «нарезку» также стоит упомянуть Zeick $19.99, который экспортирует все векторные шейпы в SVG и Glifo $19, который экспортирует эти же шейпы в иконочные шрифты.

Читать дальше →
Total votes 26: ↑24 and ↓2+22
Comments10

Information

Rating
Does not participate
Registered
Activity