Pull to refresh

Sphinx для автодокументирования на проекте

Level of difficultyEasy
Reading time6 min
Views1.5K

Sphinx был разработан 21 марта 2008 года, и является генератором документации в Python. Сам он так же был написан Python и преобразует файлы reStructuredText в HTML-вебсайты и другие форматы, включая PDF, EPub, Texinfo и man. Sphinx позволяет автоматически генерировать документацию из исходного кода, поддерживает математические записи и подсветку кода. Он используется для автоматизации создания и загрузки документации с помощью Read the Docs после каждого commit.

Читать далее
Total votes 10: ↑9 and ↓1+8
Comments0

Manticore Search 6

Reading time4 min
Views2.7K

Сегодня мы рады объявить, что Manticore Search 6.0.0 наконец вышел! Мы потратили на его создание более полугода, вложили огромное количество сил и написали более 80 000 строк кода.

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

Создай, оформи, опубликуй. Sphinx — незаменимый помощник в мире Python документации

Level of difficultyMedium
Reading time14 min
Views8.3K

В данной статье пройдём путь от знакомства с мощным инструментом для документации Sphinx до публикации нашей собственной документации на GitHub Pages. Мы узнаем насколько широко Sphinx используется в мире открытого исходного кода, включая такие проекты как Django, The Linux Kernel, TensorFlow, Pandas и многие другие.

Узнать больше
Total votes 3: ↑2 and ↓1+1
Comments2

Настройка поиска Sphinx для интернет-магазина

Reading time5 min
Views39K

Информации по Sphinx не так много, как хотелось бы. Лишняя статья не помешает.
Первые шаги в освоении Sphinx мне помогли сделать статьи Создание ознакомительного поискового движка на Sphinx + php и Пример Sphinx поиска на реальном проекте — магазин автозапчастей Tecdoc Советую начать с них.


Некоторое время на моем сайте работал поиск через LIKE по каждому слову запроса. Хотелось большего, и вот какие случаи теперь будут обрабатываться правильно:


  • Словоформы. Выдача по «винты» и «винтов» должна быть одинаковой.
  • Поиск по фрагменту слова.
  • Поиск нецелых чисел. Разделитель точка и запятая.
  • Буква Ё
  • Типичные ошибки. Например «Аммортизатор».
  • Синонимы. Регулятор и ESC.
  • Язык. mAh и мАч, В и V, AAA латиницей и кириллицей.
  • Слово из букв и цифр. 10х15х4, 6000mAh
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments8

Как мы разработали сервис, который вошел в топ-5 крупнейших аптечных сайтов мира

Reading time8 min
Views4.3K
Мы занимаемся разработкой и техподдержкой сервиса Apteka.ru в течение 7 лет. За это время выполнено около 2300 задач! Объем работ настолько большой, что проанализировать все — тот еще челлендж. Но мы постарались систематизировать свой опыт, чтобы поделиться им с коллегами. Расскажем о решениях, которые помогли сделать сервис интернет-аптекой №1 в России – и по обороту, и по времени пребывания пользователей на сайте.

image

Клиент


Apteka.ru — федеральный сервис по поиску и бронированию лекарств и товаров для здоровья, проект крупного фармацевтического дистрибьютора Рунета АО НПК «Катрен». В 2018 году на долю сайта приходился 31% от общего объема продаж онлайн-аптек. Согласно рейтингу АКИТ, он входит в ТОП-10 по количеству заказов среди всех российских интернет-ресурсов.

На протяжении 7 лет сервис ежегодно удваивал свои показатели, в 2019 году рост ускорился. По итогам 2019 года товарооборот Apteka.ru вырос на 171% и превысил 34 млрд руб., а число заказов увеличилось в 2,7 раза. Сейчас на площадке оформляется свыше 2 млн заказов в месяц.

В ассортименте Apteka.ru — до 28 000 наименований 840 российских и зарубежных брендов. Сервис работает строго в рамках закона. Клиент делает заказ на сайте, информация о нем поступает в систему, оперативно обрабатывается – и товар отправляется в выбранную аптеку.
Читать дальше →
Total votes 4: ↑2 and ↓20
Comments12

Организация ведения документации и перевода, на примере iondv. framework

Reading time12 min
Views4.7K


Как и у многих команд разрабатывающих большие продукты, при разработке опенсорсного фреймворка для визуального создания веб-приложений iondv.framework возникла задача документирования возможностей системы. Сначала для себя и новых сотрудников. Потом для пользователей. А в настоящее время документация является и важным средством продвижения продукта. И хотя последнее время идёт смещение в сторону медиа материалов (видео уроков), документация важна.


Мы прошли путь от wiki в гитлаб, до структурированной и синхронизированной по двум языкам документации в виде markdown файлов публикуемых в репозитории github. И вот мы начали переход на связку github + Weblate + readTheDocs. Так как статей об этом на хабре мало – ниже о наших ошибках, сложностях и опыте настройки перевода open-source проекта.

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

Manticore — альтернатива Эластику на C++ с 21-летней историей

Reading time53 min
Views24K

5 лет назад мы форкнули Manticore из open source версии некогда популярного open source поискового движка Sphinx 2.3.2. У нас было два пакетика травы, семьдесят пять ампул мескалина, три C++ разработчика, один саппорт-инженер, опытный пользователь, менеджер, мать пятерых детей, помогающая нам на полставки и гора багов, крэшей и технических долгов. И вот, по прошествии 5 лет и сотен новых пользователей мы готовы сказать, что Manticore можно использовать как альтернативу Elasticsearch и для полнотекстового поиска и для аналитики данных.

В этой статье хочется: вспомнить как всё начиналось и что было до SOLR и Elasticsearch, максимально объективно обрисовать текущую ситуацию, попытаться понять куда нам двигаться дальше.

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

Как мы делали свой поиск в Ozon: эволюция архитектуры от SQL до O2

Reading time16 min
Views25K

Привет, Хабр! Меня зовут Сергей, я руководитель команды поиска в Ozon. Сегодня я расскажу об эволюции наших поисковых систем: как всё начиналось более 20 лет назад с обычных SQL-запросов, как мы осваивали Sphinx и Elasticsearch и как сейчас наш собственный поисковый движок O2 на базе Apache Lucene выдерживает нагрузку в десятки тысяч RPS в сезон распродаж. Исторические хроники восстанавливались по воспоминаниям современников и представлены для полноты картины. Новейшая история описана на основе собственного опыта, поэтому подробностей будет на порядок больше. Поехали!

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

Создание системы документирования, или как мы от «ворда» к docs as code за месяц переходили

Reading time6 min
Views12K

Привет, Хабр! Меня зовут Юрий Никулин, и я руководитель направления документирования Cloud. Сегодня расскажу, как мы перешли с документирования в Word на подход docs as code и почему в качестве языка разметки выбрали reStructuredText.

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

Sphinx встреча (Москва, 8 мая)

Reading time1 min
Views3.1K
8 мая в 19.00 планируем устроить небольшую Sphinx-оводческую встречу в Москве. Еду в гости в Сотмаркет; говорят, у них из 500к уников каждый второй пользуется поиском; поэтому есть, о чем поговорить.

Для разгона я буду рассказывать про новые возможности версии 2.1 (за почти что полтора года между релизами их скопилось немало!), затем вопросы, мордобой, прочее неформальное общение. Приглашающая сторона только что подтвердила мероприятие и сказала, что смогут принять от 40 до 50 гостей. Так что если есть интерес, добро пожаловать!

Заявки кидать Вадиму Крючкову по адресу kruchkov.v@sotmarket.ru, нужно ФИО (для списка на охрану) и контактный телефон. Лучше успеть до 12:00 дня 8 мая. Засядем в головном офисе Сотмаркета по адресу г.Москва, Старопетровский проезд 7а, стр.30, м.Войковская. Для заблудившихся, телефон для связи 8-903-572-4143.

До встречи!
Total votes 16: ↑15 and ↓1+14
Comments6

Sphinx-документация на GitHub Pages

Reading time2 min
Views9.9K
GitHub Pages — это такая классная шизофреническая штука, которая может а)показывать созданную при помощи встроенного редактора страничку, б)генерировать Jekyll-блог и в)отображать html-файлы на произвольном домене.
В последнем образе она нас и интересует для размещения документации, написанной с использованием Sphinx.
Читать дальше →
Total votes 7: ↑5 and ↓2+3
Comments3

Полнотекстовый поиск в MongoDB

Reading time7 min
Views63K
В данной статье будет рассмотрена одна из новых возможностей MongoDB версии 2.4 — полнотекстовый поиск. Большая часть этой статьи будет вольным переводом документации, которая, к слову, очень подробная, но разрозненная. Здесь все будет собрано вместе. Так как этого для полноценной статьи мне показалось мало, я решил сравнить МонгоДБ с другой популярной программой для текстового поиска — Sphinx. Мое сравнение будет очень поверхностным, так как со Сфинксом я раньше не работал. Создам таблицу с 16 000 000 записей и посмотрю, кто быстрее.

image

Читать дальше →
Total votes 64: ↑57 and ↓7+50
Comments28

Sphinx для ASP.NET через jTemplates

Reading time7 min
Views11K

Есть у нас хобби — развивать интернет-магазин по продаже напитков и продуктов оптом.
Товары у нас появляются путем привлечения поставщиков и размещения их товаров в магазине.
Клиенты — владельцы ресторанов и кафе, которые заказывают товары оптом с доставкой на следующий день.
Когда количество позиций по товарам перевалило за 20 тыс., поиск через like в MS SQL стал слишком уж неверный, тем более когда поставщики загружали товар с ошибками или названия товаров были латиницей/кириллицей. После месяца различных ухищрений в процедуре поиска с конвертацией latin-cyrilic-latin, исправления грамматических ошибок, мы в конце концов осознали, что это тупиковый путь развития поиска.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments8

Embedded Sphinx, или поиск на роутере

Reading time29 min
Views12K
Поисковый сервер Sphinx (sphinxsearch) позиционируется как система, весьма неплохо масштабируемая под высокие нагрузки и большие объёмы индексов. В целом это неплохо — но иногда под рукой нет машины с 16-ядерным процессором и 256Гб оперативки. А что делать, если ядро всего одно? А если и с объёмом памяти не очень? А если это не сервер и даже не средний PC, а вообще роутер на SoC, с далеко не самым быстрым «камнем», и где всего 32Мб оперативки, да и ту нужно делить с другими процессами и системой? Взлетит ли в таком случае поисковик? Будет ли работать? Оправдано ли?
Да, взлетит. Да, будет работать. Да, вполне оправдано.
Расскажу, как
Total votes 29: ↑29 and ↓0+29
Comments11

Поиск через sphinx в django 1.6 admin

Reading time3 min
Views12K
Задача: реализовать полнотекстовый поиск в админке django.
Пример модели, по которой будем делать поиск:
class Movie(models.Model):
    title_en = models.CharField(max_length=255, null=True)
    title_ru = models.CharField(max_length=255, null=True)
    year = models.PositiveSmallIntegerField(null=True)

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

Реализация условия «ИЛИ» в SphinxQL

Reading time1 min
Views10K
SQL-подобный язык SphinxQL пока не поддерживает условие «OR» в выражении «WHERE». То есть при запросе к поисковому индексу нельзя написать нечто вроде

SELECT * FROM `goods_index` WHERE `price` > 100 OR `price` = 0;
выбрать из индекса все товары, с ценой большее 100 тугриков или если цена не указана

Но выходы, конечно, есть: использовать вычисления. Перепишем запрос для придуманного мною примера в таком виде:
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments12

AMA, или спроси бэкендера из Avito: анонс

Reading time1 min
Views11K

Что такое AMA? Этот формат очень популярен на Reddit. Ты рассказываешь о себе и предлагаешь читателям задавать любые вопросы: Ask Me Anything! Особенно круто это удается у команд профессионалов — в итоге получается ряд коротких и полезных тематических бесед. Нам нравится Reddit, сам формат AMA и Хабрахабр, поэтому мы тоже вступаем в игру и приглашаем вас к диалогу здесь. Этот пост — анонс секции вопросов и ответов, которая будет работать в блоге Avito 13 октября, в пятницу, с 12 до 19 часов по мск. В этот день в AMA с вами будут на связи пять моих коллег, которые занимаются разработкой серверной части Avito. А под катом я напомню, о чем можно у них спросить.


Читать дальше →
Total votes 28: ↑25 and ↓3+22
Comments5

Андрей Карпов считает, что код проекта Manticore качественнее, чем код проекта Sphinx

Reading time9 min
Views11K
Sphinx vs ManticoreМои читатели попросили сравнить проекты Manticore и Sphinx с точки зрения качества кода. Я могу сделать это только одним освоенным мною способом — проверить проекты с помощью статического анализатора PVS-Studio и посчитать плотность ошибок в коде. Итак, я проверил C и C++ код в этих проектах и, на мой взгляд, качество кода Manticore выше, чем качество кода Sphinx. Естественно, это очень узкий взгляд, и я не претендую на достоверность своего исследования. Однако меня попросили, и я сделал сравнение так, как умею.
Читать дальше →
Total votes 31: ↑22 and ↓9+13
Comments7

Как мы выбирали между Elastic и Tarantool, а сделали свою (самую быструю) in-memory БД. С Join и полнотекстовым поиском

Reading time10 min
Views46K

Всем привет.


С середины 2016 года мы проектируем и разрабатываем новое поколение платформы. Принципиальное отличие от первого поколения — поддержка API "тонкого" клиента. Если старая платформа предполагает, что на клиента при запуске загружается метаинформация о всем контенте, который доступен для абонента, то новая платформа должна отдавать срезы данных отфильтрованные и отсортированы для отображения на каждом экране/странице.


Высокоуровневая архитектура на уровне хранения данных внутри системы — постоянное хранение всех данных в централизованном реляционном SQL хранилище. Выбор пал на Postgres, тут никаких откровений. В качестве основного языка для разработки — выбрал golang.


У системы порядка 10м пользователей. Мы посчитали, что с учетом профиля теле-смотрения, 10М пользователей может дать сотни тысяч RPS на всю систему.



Это означает, что запросы от клиентов и близко не стоит подпускать к реляционной SQL БД без кэширования, а между SQL БД и клиентами должен быть хороший кэш.


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

Читать дальше →
Total votes 79: ↑74 and ↓5+69
Comments115

Как мы делали проект про выборы президента России 2018 года

Reading time5 min
Views4.9K

Осенью 2017 года ребята из ГОЛОСа подумали, что онлайн-трансляцию выборов надо выводить на новый уровень:

  • во-первых, расстраивало, что до сих пор на картах субъектов Российской федерации нет детализации до территориальных комиссий,
  • во-вторых, крайняя сложность и запутанность сайта ЦИК, которая не позволяет быстро узнать результаты по своему избирательному участку,
  • и в-третьих, решено было начать делать основу для энциклопедии результатов, когда можно посмотреть результаты по разным выборам для одного участка. Грубо говоря, узнать, как голосовали соседи.

И все это не только для того, чтобы узнать в каком регионе живет 39% избирателей за Грудинина, но и для того, чтобы проверить, есть ли такой участок в стране, где Путин не выиграл выборы.
Читать дальше →
Total votes 43: ↑23 and ↓20+3
Comments14