Sphinx был разработан 21 марта 2008 года, и является генератором документации в Python. Сам он так же был написан Python и преобразует файлы reStructuredText в HTML-вебсайты и другие форматы, включая PDF, EPub, Texinfo и man. Sphinx позволяет автоматически генерировать документацию из исходного кода, поддерживает математические записи и подсветку кода. Он используется для автоматизации создания и загрузки документации с помощью Read the Docs после каждого commit.
Manticore Search 6
Сегодня мы рады объявить, что Manticore Search 6.0.0 наконец вышел! Мы потратили на его создание более полугода, вложили огромное количество сил и написали более 80 000 строк кода.
Создай, оформи, опубликуй. Sphinx — незаменимый помощник в мире Python документации
В данной статье пройдём путь от знакомства с мощным инструментом для документации Sphinx до публикации нашей собственной документации на GitHub Pages. Мы узнаем насколько широко Sphinx используется в мире открытого исходного кода, включая такие проекты как Django, The Linux Kernel, TensorFlow, Pandas и многие другие.
Настройка поиска Sphinx для интернет-магазина
Информации по Sphinx не так много, как хотелось бы. Лишняя статья не помешает.
Первые шаги в освоении Sphinx мне помогли сделать статьи Создание ознакомительного поискового движка на Sphinx + php и Пример Sphinx поиска на реальном проекте — магазин автозапчастей Tecdoc Советую начать с них.
Некоторое время на моем сайте работал поиск через LIKE по каждому слову запроса. Хотелось большего, и вот какие случаи теперь будут обрабатываться правильно:
- Словоформы. Выдача по «винты» и «винтов» должна быть одинаковой.
- Поиск по фрагменту слова.
- Поиск нецелых чисел. Разделитель точка и запятая.
- Буква Ё
- Типичные ошибки. Например «Аммортизатор».
- Синонимы. Регулятор и ESC.
- Язык. mAh и мАч, В и V, AAA латиницей и кириллицей.
- Слово из букв и цифр. 10х15х4, 6000mAh
Как мы разработали сервис, который вошел в топ-5 крупнейших аптечных сайтов мира
Клиент
Apteka.ru — федеральный сервис по поиску и бронированию лекарств и товаров для здоровья, проект крупного фармацевтического дистрибьютора Рунета АО НПК «Катрен». В 2018 году на долю сайта приходился 31% от общего объема продаж онлайн-аптек. Согласно рейтингу АКИТ, он входит в ТОП-10 по количеству заказов среди всех российских интернет-ресурсов.
На протяжении 7 лет сервис ежегодно удваивал свои показатели, в 2019 году рост ускорился. По итогам 2019 года товарооборот Apteka.ru вырос на 171% и превысил 34 млрд руб., а число заказов увеличилось в 2,7 раза. Сейчас на площадке оформляется свыше 2 млн заказов в месяц.
В ассортименте Apteka.ru — до 28 000 наименований 840 российских и зарубежных брендов. Сервис работает строго в рамках закона. Клиент делает заказ на сайте, информация о нем поступает в систему, оперативно обрабатывается – и товар отправляется в выбранную аптеку.
Организация ведения документации и перевода, на примере iondv. framework
Как и у многих команд разрабатывающих большие продукты, при разработке опенсорсного фреймворка для визуального создания веб-приложений iondv.framework возникла задача документирования возможностей системы. Сначала для себя и новых сотрудников. Потом для пользователей. А в настоящее время документация является и важным средством продвижения продукта. И хотя последнее время идёт смещение в сторону медиа материалов (видео уроков), документация важна.
Мы прошли путь от wiki в гитлаб, до структурированной и синхронизированной по двум языкам документации в виде markdown файлов публикуемых в репозитории github. И вот мы начали переход на связку github + Weblate + readTheDocs. Так как статей об этом на хабре мало – ниже о наших ошибках, сложностях и опыте настройки перевода open-source проекта.
Manticore — альтернатива Эластику на C++ с 21-летней историей
5 лет назад мы форкнули Manticore из open source версии некогда популярного open source поискового движка Sphinx 2.3.2. У нас было два пакетика травы, семьдесят пять ампул мескалина, три C++ разработчика, один саппорт-инженер, опытный пользователь, менеджер, мать пятерых детей, помогающая нам на полставки и гора багов, крэшей и технических долгов. И вот, по прошествии 5 лет и сотен новых пользователей мы готовы сказать, что Manticore можно использовать как альтернативу Elasticsearch и для полнотекстового поиска и для аналитики данных.
В этой статье хочется: вспомнить как всё начиналось и что было до SOLR и Elasticsearch, максимально объективно обрисовать текущую ситуацию, попытаться понять куда нам двигаться дальше.
Как мы делали свой поиск в Ozon: эволюция архитектуры от SQL до O2
Привет, Хабр! Меня зовут Сергей, я руководитель команды поиска в Ozon. Сегодня я расскажу об эволюции наших поисковых систем: как всё начиналось более 20 лет назад с обычных SQL-запросов, как мы осваивали Sphinx и Elasticsearch и как сейчас наш собственный поисковый движок O2 на базе Apache Lucene выдерживает нагрузку в десятки тысяч RPS в сезон распродаж. Исторические хроники восстанавливались по воспоминаниям современников и представлены для полноты картины. Новейшая история описана на основе собственного опыта, поэтому подробностей будет на порядок больше. Поехали!
Создание системы документирования, или как мы от «ворда» к docs as code за месяц переходили
Привет, Хабр! Меня зовут Юрий Никулин, и я руководитель направления документирования Cloud. Сегодня расскажу, как мы перешли с документирования в Word на подход docs as code и почему в качестве языка разметки выбрали reStructuredText.
Sphinx встреча (Москва, 8 мая)
Для разгона я буду рассказывать про новые возможности версии 2.1 (за почти что полтора года между релизами их скопилось немало!), затем вопросы, мордобой, прочее неформальное общение. Приглашающая сторона только что подтвердила мероприятие и сказала, что смогут принять от 40 до 50 гостей. Так что если есть интерес, добро пожаловать!
Заявки кидать Вадиму Крючкову по адресу kruchkov.v@sotmarket.ru, нужно ФИО (для списка на охрану) и контактный телефон. Лучше успеть до 12:00 дня 8 мая. Засядем в головном офисе Сотмаркета по адресу г.Москва, Старопетровский проезд 7а, стр.30, м.Войковская. Для заблудившихся, телефон для связи 8-903-572-4143.
До встречи!
Sphinx-документация на GitHub Pages
В последнем образе она нас и интересует для размещения документации, написанной с использованием Sphinx.
Полнотекстовый поиск в MongoDB
Sphinx для ASP.NET через jTemplates
Есть у нас хобби — развивать интернет-магазин по продаже напитков и продуктов оптом.
Товары у нас появляются путем привлечения поставщиков и размещения их товаров в магазине.
Клиенты — владельцы ресторанов и кафе, которые заказывают товары оптом с доставкой на следующий день.
Когда количество позиций по товарам перевалило за 20 тыс., поиск через like в MS SQL стал слишком уж неверный, тем более когда поставщики загружали товар с ошибками или названия товаров были латиницей/кириллицей. После месяца различных ухищрений в процедуре поиска с конвертацией latin-cyrilic-latin, исправления грамматических ошибок, мы в конце концов осознали, что это тупиковый путь развития поиска.
Embedded Sphinx, или поиск на роутере
Да, взлетит. Да, будет работать. Да, вполне оправдано.
Поиск через sphinx в django 1.6 admin
Пример модели, по которой будем делать поиск:
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)
Реализация условия «ИЛИ» в SphinxQL
SELECT * FROM `goods_index` WHERE `price` > 100 OR `price` = 0;
выбрать из индекса все товары, с ценой большее 100 тугриков или если цена не указанаНо выходы, конечно, есть: использовать вычисления. Перепишем запрос для придуманного мною примера в таком виде:
AMA, или спроси бэкендера из Avito: анонс
Что такое AMA? Этот формат очень популярен на Reddit. Ты рассказываешь о себе и предлагаешь читателям задавать любые вопросы: Ask Me Anything! Особенно круто это удается у команд профессионалов — в итоге получается ряд коротких и полезных тематических бесед. Нам нравится Reddit, сам формат AMA и Хабрахабр, поэтому мы тоже вступаем в игру и приглашаем вас к диалогу здесь. Этот пост — анонс секции вопросов и ответов, которая будет работать в блоге Avito 13 октября, в пятницу, с 12 до 19 часов по мск. В этот день в AMA с вами будут на связи пять моих коллег, которые занимаются разработкой серверной части Avito. А под катом я напомню, о чем можно у них спросить.
Андрей Карпов считает, что код проекта Manticore качественнее, чем код проекта Sphinx
Как мы выбирали между Elastic и Tarantool, а сделали свою (самую быструю) in-memory БД. С Join и полнотекстовым поиском
Всем привет.
С середины 2016 года мы проектируем и разрабатываем новое поколение платформы. Принципиальное отличие от первого поколения — поддержка API "тонкого" клиента. Если старая платформа предполагает, что на клиента при запуске загружается метаинформация о всем контенте, который доступен для абонента, то новая платформа должна отдавать срезы данных отфильтрованные и отсортированы для отображения на каждом экране/странице.
Высокоуровневая архитектура на уровне хранения данных внутри системы — постоянное хранение всех данных в централизованном реляционном SQL хранилище. Выбор пал на Postgres, тут никаких откровений. В качестве основного языка для разработки — выбрал golang.
У системы порядка 10м пользователей. Мы посчитали, что с учетом профиля теле-смотрения, 10М пользователей может дать сотни тысяч RPS на всю систему.
Это означает, что запросы от клиентов и близко не стоит подпускать к реляционной SQL БД без кэширования, а между SQL БД и клиентами должен быть хороший кэш.
Посмотрели на существующие решения — погоняли прототипы. Данных, по современным меркам у нас немного, но параметры фильтрации (читай бизнес-логика) — сложные, и главное персонализированные — зависящие от сессии пользователя, т.е. использовать параметры запроса как ключ кэширования в K-V кэше будет очень накладно, тем более пейджинг и богатый набор сортировок никто не отменял. По сути, под каждый запрос от пользователя формируется полностью уникальный набор отфильтрованных записей.
Как мы делали проект про выборы президента России 2018 года
Осенью 2017 года ребята из ГОЛОСа подумали, что онлайн-трансляцию выборов надо выводить на новый уровень:
- во-первых, расстраивало, что до сих пор на картах субъектов Российской федерации нет детализации до территориальных комиссий,
- во-вторых, крайняя сложность и запутанность сайта ЦИК, которая не позволяет быстро узнать результаты по своему избирательному участку,
- и в-третьих, решено было начать делать основу для энциклопедии результатов, когда можно посмотреть результаты по разным выборам для одного участка. Грубо говоря, узнать, как голосовали соседи.
И все это не только для того, чтобы узнать в каком регионе живет 39% избирателей за Грудинина, но и для того, чтобы проверить, есть ли такой участок в стране, где Путин не выиграл выборы.