Друзья, я наконец опубликовал третью книгу по теме поиска (плюс еще одна по близкой теме рекомендательных систем). Они очень нишевые, рассчитаны на специалистов, и я подумал, что Habr просто идеальное место сообщить об этом.

Во всех четырех книгах ноль воды, и очень плотно изложен материал, с ссылками на научные статьи и иллюстрациями, где они реально необходимы.

Anatomy of Ecommerce Search

https://testmysearch.com/books/anatomy-of-ecommerce-search.html

Начнем с той, что вышла сегодня - Anatomy of Ecommerce Search.

и мой соавтор
и мой соавтор

Цель была структрировать мои знания и опыт, и заодно поресерчить то, что прошло мимо меня. По поиску на самом деле даже в англоязычном мире почти нет книг. Ну как нет, есть штук пять, но они, во-первых, уже устарели, а во-вторых, отражают только некоторые аспекты большой темы (Среди них отдельно есть матчасть, которую мы пока уберем в сторону). Среди таких книг ничего не заточено конкретно под E-commerce. А ведь поиск в интернет-магазине — это совсем другой зверь, чем условно поиск по Википедии. И если переводить в слова опыт сообщества, легко получается 500 с лишним страниц концентрированных знаний, без воды и повторов. Собственно, это я и делал в этом году.

Что внутри? Начинается с основ информационного поиска и архитектуры поисковой системы для ecommerce, микросервисы, структура данных и т.д. Затем обзор темы ecommerce-поиска, который позволяет лучше понять проблематику. Как пример - нахождение баланса между честным поиском и инструментом для повышения продаж.

Далее большой раздел про состояние рынка, место SaaS-решений на нем. В частности, в книге довольно проработанный вопросник, очень полезный для выбора поставщика решения по поиску. В нем много "tricky" вопросов вендорам, которые непрозрачно намекают на известные экспертам минусы. Ответ вендора на такие вопросы может много вам дать.

В технической секции много внимания тому, как строятся большие специализированные решения. Много ссылок на научные работы от Amazon, eBay, Shopify, на их решения, пересказанные доступным языком, на открытые данные от них же.

Отдельная глава посвящена тому, как построить хорошую команду, специализирующуюся только на улучшении поиска, и какая организационная модель работает лучше в каких ситуациях.

Большая часть книги посвящена темам Query, User Intent, Product Understanding. Фактически это центральная задача любого поиска - понять, что хотел пользователь, через запрос, который тривиально можно понять неправильно и выдать не то. Здесь очень много наработок и пересказов научных работ последних лет. В продуктовом моделировании затрагиваются темы работы с мультивариантными товарами, таксономией, knowledge graph.

В разделе Candidate Retrieval Architectures подробно описаны два главных направления - лексический и семанческий поиск, а также разнообразные их ансамбли. Опять же, с отсылками на научные работы, главным образом от Amazon.

Описаны механизмы ранжирования (ranking) результатов поиска. В ecommerce это часто довольно нетривиально. Здесь рассказываются про разные варианты Learning to Rank, алгоритмы LambdaMART, использование LLM и нейронных сетей, способы оценки качество ранжирования.

Поисковые подсказки (autosuggestions/autocomplete) вынесены в отдельный большой раздел, где рассматриваются различные архитектуры реализации, потенциальные проблемы и методы их решения.

Большой разделы про фасеты. У меня уже давно выходила подробная статья про них на блоге, и она по сути явилась опорой для этого раздела. Конечно, за несколько лет с момента выхода статьи я накопил еще тонну релевантных вещей, и теперь в книге есть про фасеты вообще все.

Не секрет, что любой поиск сейчас - это смесь собственно поиска и рекомендаций, потому что часто пользователь не совсем знает, что ищет, и если интернет-магазин в этом ему помогает, то выигрывают все. В книге отдельная глава про то, как строятся рекомендационные модели для поиска и какие там есть "грабли" и возможности.

Отдельный блок про поисковую аналитику - как измерять качество поиска, что собирать, и как это обрабатывать, какие отчеты полезно генерить, чтобы работа по улучшению поиска была не "методом тыка", а структурированной и рациональной.

Также я постарался разобрать специфику разных вертикалей: от запчастей и электроники, до фешена и гросери. Есть также отдельная глава про взгляд на поиск со стороны information security. Где могут быть потенциальные "дыры" и как избежать проблем от ботов, скрейперов, и утечки персональных данных.

Эта 500-страничная книга для инженеров, архитекторов, CTO и продактов, которые строят поиск, который реально продает, а не просто «находит слова».

Есть превью на более, чем 200 страниц, доступно по ссылке ниже.

Книга на английском языке, доступна только на амазоне и в виде PDF-версии, но с оплатой по Paypal. В целом, разные варианты работают, включая условно коробку пряников моей по почте моей маме в Коломне.

https://testmysearch.com/books/anatomy-of-ecommerce-search.html

Recommender Algorithms

В этой книжке я собрал более 50 алгоритмов рекомендаций с математическими выкладками, подробным описанием и примерами кода.

Все началось ранней весной в Германии, когда я посетил конференцию ACM и сделал первые наброски структуры книги, анализируя доклады по потоку RecSys. И вот, спустя полгода, книга увидела свет.

Почему она появилась? Потому что ни в интернете, ни в печати нет единого, доступного источника, где подробно разбирались бы алгоритмы рекомендаций разных типов и назначения. Есть статьи, сфокусированные на узких аспектах, но собрать и систематизировать разработки — от фундаментальных до самых недавних — до сих пор, кажется, никому не удавалось почему-то. Может, это никому и не надо было. Мне вот вдруг стало надо. Не знаю, получилось ли у меня, но буду рад вашим отзывам.

Книга на английском языке, доступна только на амазоне и в виде PDF-версии, но с оплатой по Paypal. В целом, разные варианты работают, включая условно коробку пряников моей по почте моей маме в Коломне.

https://testmysearch.com/books/recommender-algorithms.html

Есть превью первых 40 страниц. Кликайте на ссылку выше.

Inside Apache Solr and Lucene: Algorithms and Engineering Deep Dive

https://testmysearch.com/books/inside-solr.html

Эта книга отличается от других по теме Solr/Lucene тем, что она описывает алгоритмы и структуры данных, используемые в Solr/Lucene, начиная от проблемы, которая стояла перед разработчиками, затем рассматривая наивные или прямолинейные решения, и дальше делюсь тем, как проблему решили архитекторы в Solr/Lucene. Во многих случаях это интересные, наукоёмкие решения, за которыми стоят научные работы и статьи (ссылки имеются в книге). Часто довольно хадкорные.

Книжку можно найти на официальном сайте Apache Solr - https://solr.apache.org/resources.html

Например, я рассказываю не только об inverted index, posting lists и как хранятся сегменты — это есть в других книгах, — но и о том, как там используется Finite-State Transducer (FST) (это графовая структура для словарей терминов, хранящая термины и метаданные с общими префиксами/суффиксами, решающая проблему высокого потребления памяти и медленных префиксных/диапазонных запросов в больших словарях, предоставляя компактные, O(termLen) лукапы); я рассказываю про Pulsing Codec, Delta Encoding, Skip Lists, PackedInts (минимальное количество бит на блок целых чисел), Variable-Length Integers, LSM-Tree, HNSW для векторов, Roaring Bitmaps, сжатия LZ4 и DEFLATE, Memory-Mapped I/O, Scatter-Gather Query Execution, Hash-Based Routing, SIMD Vectorization и множество других вещей такого рода.

Есть превью первых 40 страниц, доступно по ссылке ниже.

https://testmysearch.com/books/inside-solr.html

Для архитекторов решений и инженеров поиска. Книга на английском языке, доступна только на амазоне и в виде PDF-версии, но с оплатой по Paypal. В целом, разные варианты работают, включая условно коробку пряников моей по почте моей маме в Коломне.

Beyond English: Architecting Search for a Global World

Эта книга посвящена челенджам, возникающим при проектировании поисковых систем на пересечении лингвистики и инженерии.

https://testmysearch.com/books/beyond-english.html

История темы началась ещё в 2019 году, когда я опубликовал на своём блоге подробное исследование особенностей поиска на китайском и японском языках. Со временем оно превратилось в одну из глав книги — существенно переработанную, дополненную и улучшенную.

Как можно догадаться, книга рассказывает о том, как создавать поисковые системы, которые действительно понимают пользователей из разных культур, говорящих на разных языках и имеющих собственные ожидания от работы поиска.

Кому может быть полезна эта книга?

Архитекторам систем, выходящим на глобальные рынки или уже работающим на них.

А также всем инженерам, которым интересно, как работает язык и какие особенности стоит учитывать при создании многоязычных веб-сайтов и поисковых решений.

Задумывались ли вы когда-нибудь, например, в каких европейских странах пользователи могут искать один и тот же термин на родном языке или латиницей — и как игнорирование этой культурной двойственности способно ухудшить релевантность результатов? Почему длинные составные слова в немецком и нидерландском (например, Fahrkartenautomat — билетный автомат) создают проблемы для токенизации? Как правильно разделить такие слова, чтобы повысить полноту поиска, не потеряв смысл? Почему во французском поисковом запросе l’aéroport (аэропорт) важно корректно обрабатывать элизии и сокращения, и как ошибки при их обработке приводят к неправильному разбиению слов и ухудшению результатов? Почему пользователи в Польше часто опускают диакритические знаки (например, вводят zazolc gesla jazn вместо zażółć gęślą jaźń), и как система может нормализовать ввод так, чтобы всегда находить правильные документы? Какие подводные камни при этом могут возникнуть? Почему японский пользователь может искать одно и то же слово как кандзи, написанным на хирагане или катакане — и как сделать так, чтобы поисковик понимал все варианты одинаково? Почему отсутствие пробелов в китайском языке превращает фразу "поездка в Токио" в задачу сегментации, и как различия между вариантами китайского языка требуют умного сопоставления? Почему одно и то же слово на кхмерском может быть закодировано в Unicode несколькими способами, выглядя одинаково для человека, но ломая поиск — и как это исправить? Что делает переключение языков внутри запроса (например, blue साड़ी) таким сложным для NLP, и как построить систему, которая обрабатывает это корректно, не раздражая пользователей?

Книга рассматривает существующие подходы к решению подобных задач с точки зрения архитектора решений.

В ней нет примеров кода, но есть множество ссылок на существующие инструменты и академические исследования.

Есть превью первых 40 страниц, доступно по ссылке ниже.

https://testmysearch.com/books/beyond-english.html

Аналогично, книга для архитекторов решений и инженеров поиска. Книга на английском языке, доступна только на амазоне и в виде PDF-версии, но с оплатой по Paypal. В целом, разные варианты работают, включая условно коробку пряников моей по почте моей маме в Коломне.

Надеюсь, эти книжки будут полезными. Если я найду способ распространять их в регионах, где нет Amazon и Paypal, обновлю эту статью ссылками.

Комментарии (0)