SlideShare a Scribd company logo
Как устроен поиск
Андрей Аксенов, Sphinx
v.2.0
Поиск устроен вот так
• Сначала индексация
• Потом поиск
• Ставить, конечно, Sphinx +
мегаконтракт на поддержку
• Всё, расходимся
Поиск устроен вот так
• Индексация
– Берем документы
– Извлекаем ключевые слова
– Строим спецструктуру, FT index
• Поиск
– Берем запрос, ищем по спецструктуре
– Допобработка (where/order/group,
кластер, реранжирование, …)
Данные решают все
• FT index =
– Словарь
– Списки документов
– Списки позиций
– Формат хранения этого всего
А вот наноиндекс
• Словарь + списки документов:
Абыр => [ 123 ]
Валг => [ 123 ]
Васечкин=> [ 7, 40, 42, 1917, … ]
Вася => [ 3, 141, 592, 653, … ]
Петров => [ 1, 2, 3, 5, 8, 13, … ]
Петя => [ 2, 4, 8, 16, … ]
Данные решают все
• Элемент словаря на самом деле =
– Слово
– Указатель на документы/позиции
• Или инлайн данные
– Дополнительная метаинформация
• Или никакой
– Например,
w=“Абыр”, docoff=1234, posoff=5678,
ndocs=12, nposs=72, fieldmask=3, …
Данные решают все
• Словарь =
– Обычно сортированный вектор
• Круто хеш, но прощай, поиск подстрок
– Обычно пожат
• Абыр, Абырр, Абыррр, Абырвалг!
– Эффективно с инлайнигом
• Зачем ndocs=1 docsoff=1234, если можно
сразу docid=9876?!
– Оп, и вот сразу детали ретализации
Данные решают все
• Документы и позиции
– Всегда сортированы (иначе не пересечь)
Васечкин => [ 7, 40, 42, 1917, … ]
Вася => [ 3, 141, 592, 653, … ]
– Обычно пожаты (отдельная поднаука)
– Хранятся и отдельно и вперемешку
– Плюс спецфокусы! (Маски полей,
битмапы, плоская нумерация, итд итп)
Данные решают все
• Lucene = docids, tfs, postings
• Sphinx 2 = docids+meta, postings
• Sphinx 3 = ??? docids+postings
• Google, Yandex, … = ??? 
The fuck we care?!
• СКОРОСТЬ блин (и объем еще)
• Например,
“что” => [1,3,4,5,6,10,11,…]
varint => [1,2,1,1,1,4, 1,…] x 8 bit
gvi/pfd => [0,1,0,0,0,3, 0,…] x 0..2 bit
• Про 0 bit тащемта не шутка!(Хотя
такое щщасье случается оч редко)
Текста мало, дайте цифер
• Еще есть атрибуты
• Бывают schemaful, schemaless
• Хранить можно как угодно, все знают
– “relational”, JSON text, BSON, …
• Lucene = ФлексиТормоз!!!
– По меньшей мере, была и по дефолту
• Sphinx = АдскаяСмесь!!!
– relational + SphinxBSON
А к цифрам - еще цифер!!!
• Атрибуты можно хранить
– Тупо
– Менее тупо
• Со схемой: построчно, колоночно
• Без схемы: K-V, иерархия, сжатие
• Индексы: никаких, эмуляция, родные
А что еще (м.Строгино!!!)
• Про ранжирование
• Про сегменты и весь реалтайм
• Про еще отличия физики S vs L
• Про разницу подходов к снаряду
• Про как бенчить надо, а как будут
• Про жопки в реализациях
– Как зажигал [abc*]
• Плюс должно быть слово КЛАСТЕР
Про ранжирование
• Если не нужно, ура, булев матчинг
• Если лёгкое, BM25 (у нас +proximity)
• Простая формула, ДВЕ переменные
– TF, IDF по словам; плюс avg_doc_length
• Если тяжёлое, всё весело
– Например, 20 переменных. Или 800.
Про сегменты и весь RT
• Как устроен т.н. “реалтайм”?
(здесь короче картинка такая с лысым
писюном из Матрицы и типа гнутой
ложкой - ну хоть не дырявой, бггг)
• Его нету, есть create/merge/purge
• Sphinx еще умеет update атрибутивки
И еще про разную физику
• Sphinx vs Lucene чота волнует всех
• Концептуально все одинаково, но
• Разные форматы индекса, атрибутов
• S = общие словари, L = по полям
• S = таблица атрибутов в памяти,
L = документы на диске и кешкешкеш
• S = микс schemaful/less, L = вроде
только less
Про подходы к снаряду
– (плюс детали реализации, ага)
• S = надо все уметь быстро считать
• L = надо уметь отдавать из кеша!!!
• S = позиции, фикс RAM, итд итп
• L = ненене, булев и BM25 и кеш/RAM
• S = плохо, хрен включишь кеш
• L = плохо, хрен сделаешь бенчмарк
• Внезапно история про Xapian!!!
Про жопки в реализации
• Здесь внезапная история про [abc*] и
про старые версии – СЕГОДНЯ ВЕЗДЕ
ВСЕ НОРМАЛЬНО
• Старый Lucene жог, full scan словаря
• Старый Sphinx жог, безлимитный
expansion и “везде мелкие” буфера
Про как надо бенчить
• На оценку 3 = разные системы,
одинаковый запрос, смотрим время
• На оценку 4 = повторяем запрос N
раз, считаем среднее время, чтобы
кеш прогрело и не дрожало
• На оценку 5 = выкидываем 1й прогон
всегда и даже выкидываем outliers,
считаем среднее без них
Как устроен поиск / Андрей Аксенов (Sphinx)
Тёплое != мягкое
• Где ошибка?
• “берем разные системы, делаем к
ним одинаковый запрос”…
• Одинаковый запрос
•ОДИНАКОВЫЙ
ЗАПРОС, КАРЛ!
Marketing driven defaults 1
• Sphinx = типа быстрое strict-AND, зато
medium rare proximity+bm15
ранжирование
• Lucene = типа медленное OR, зато
lightweight bm25 ранжирование
• Xapian!!!
• …и это еще цветочки!!!
Marketing driven defaults 2
• Повторные запросы?
• Sphinx (*) = честно вычисляем всё
заново, кешируется только дисковое
чтение, и то у OS
• Lucene = на всех уровнях есть
внутренние кеши, некоторые
невозможно отключить никак
Marketing driven defaults 3
• Сниппеты, прям шедевр!
• “А чё у вас в N раз медленнее, чем
Solr?”
– Поддержка синтаксиса VS bag-of-words
– Произвольный текст VS только
преиндексированный
– И ключевая “оптимизация” про 64KB!
Слово КЛАСТЕР похоже…
• И тут внезапно такое м.Строгино
Итого
Как устроен поиск / Андрей Аксенов (Sphinx)
Вопросы?
для стеснительных:
shodan@sphinxsearch.com

More Related Content

PPTX
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
PPT
Цена абстракции, Андрей Аксёнов (Sphinx)
PPT
Как устроен NoSQL, Андрей Аксенов (Sphinx)
PPTX
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
PPTX
Как устроен поиск
PPTX
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
PPTX
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
PPTX
Бинарные (файловые) хранилища- страшная сказка с мрачным концом
Выбираем поисковик умом головы, Андрей Аксенов (Sphinx)
Цена абстракции, Андрей Аксёнов (Sphinx)
Как устроен NoSQL, Андрей Аксенов (Sphinx)
Sphinx 3.0, поиск 15 лет спустя / Андрей Аксенов (Sphinx)
Как устроен поиск
Как устроена MySQL-репликация / Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Бинарные (файловые) хранилища- страшная сказка с мрачным концом

What's hot (19)

PDF
Где живут Ваши объявления / Тюрин Михаил (Avito)
PPTX
опыт построения и эксплуатации большого файлового хранилища
PPTX
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
PPTX
Спасение 6 миллионов файлов в условиях полного Хецнера
PPTX
Open source субд глазами обычного программиста
PDF
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
PDF
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
PPTX
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
PDF
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
PDF
RTB DSP на языке Go: укрощение buzzwords
PPT
А. Аксенов "Как устроен NoSql", DUMP-2014
PDF
Загрузка больших объемов данных для бизнес-аналитики
PDF
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
PDF
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
PDF
SphinxSearch Meetup - Tips&tricks
PDF
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
PDF
pgconf.ru 2015 avito postgresql
PDF
Near-realtime аналитика событий в высоконагруженном проекте
Где живут Ваши объявления / Тюрин Михаил (Avito)
опыт построения и эксплуатации большого файлового хранилища
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
Спасение 6 миллионов файлов в условиях полного Хецнера
Open source субд глазами обычного программиста
NoSQL - коротко о главном / Сергей Туленцев (TextMaster)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
RTB DSP на языке Go: укрощение buzzwords
А. Аксенов "Как устроен NoSql", DUMP-2014
Загрузка больших объемов данных для бизнес-аналитики
Осваиваем Tarantool 1.6 / Евгений Шадрин (Sberbank Digital Ventures)
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
SphinxSearch Meetup - Tips&tricks
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
pgconf.ru 2015 avito postgresql
Near-realtime аналитика событий в высоконагруженном проекте
Ad

Viewers also liked (13)

PPTX
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
PDF
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
PDF
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
PDF
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
PDF
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
PDF
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
PPTX
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...
PDF
Бинарные (файловые) хранилища: страшная сказка с мрачным концом / Даниил Подо...
PDF
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
PDF
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
PPT
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
PDF
Как понять, что происходит на сервере? / Александр Крижановский (NatSys Lab.,...
PDF
Современная операционная система: что надо знать разработчику / Александр Кри...
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
Производительность запросов в PostgreSQL - шаг за шагом / Илья Космодемьянски...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Принципы и приёмы обработки очередей / Константин Осипов (Mail.ru)
Эволюция процесса деплоя в проекте / Денис Яковлев (2ГИС)
Какие бывают провайдеры услуг дата-центров и как выбрать оптимальный? / Игорь...
Бинарные (файловые) хранилища: страшная сказка с мрачным концом / Даниил Подо...
Как балансировать на «сетевом» канате под куполом тяжелой нагрузки? / Сергей ...
Кэширование данных в web приложениях. Использование memcached / Юрий Красноще...
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Как понять, что происходит на сервере? / Александр Крижановский (NatSys Lab.,...
Современная операционная система: что надо знать разработчику / Александр Кри...
Ad

Similar to Как устроен поиск / Андрей Аксенов (Sphinx) (20)

PPT
Cфинкс и поиск терабайта
PDF
Индексируй неиндексирумое
PPT
Tagconf 12 - SphinxSearch - 1
PPTX
Как устроен поиск (Андрей Аксёнов)
PPT
sphinx Hlpp2008
PPT
эффективный полнотекстовый поиск по базам данных петр зайцев
PPTX
Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)
PPTX
Sphinx
PPTX
Поиск на своем сайте, обзор open source решений
PDF
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
PDF
Как размножается Sphinx
PDF
"Sphinx 3.0 в реальной жизни" Андрей Смирнов (Avito)
PDF
Андрей Аксёнов, Sphinx Technologies Inc.
PPTX
Sphinx 2013
PDF
20111001 information retrieval raskovalov_lecture2
PDF
20120226 information retrieval raskovalov_lecture03-04
PDF
"Бэк-офис в Avito: миллиард объявлений на 10 серверах" Вячеслав Крюков (Avito)
PPTX
Про качественный поиск
PPTX
Andrew Aksyonoff "Архитектура вокруг поиска"
Cфинкс и поиск терабайта
Индексируй неиндексирумое
Tagconf 12 - SphinxSearch - 1
Как устроен поиск (Андрей Аксёнов)
sphinx Hlpp2008
эффективный полнотекстовый поиск по базам данных петр зайцев
Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)
Sphinx
Поиск на своем сайте, обзор open source решений
Sphinx для высоко-нагруженных и масштабируемых проектов, Вячеслав Крюков
Как размножается Sphinx
"Sphinx 3.0 в реальной жизни" Андрей Смирнов (Avito)
Андрей Аксёнов, Sphinx Technologies Inc.
Sphinx 2013
20111001 information retrieval raskovalov_lecture2
20120226 information retrieval raskovalov_lecture03-04
"Бэк-офис в Avito: миллиард объявлений на 10 серверах" Вячеслав Крюков (Avito)
Про качественный поиск
Andrew Aksyonoff "Архитектура вокруг поиска"

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...

Как устроен поиск / Андрей Аксенов (Sphinx)

  • 1. Как устроен поиск Андрей Аксенов, Sphinx v.2.0
  • 2. Поиск устроен вот так • Сначала индексация • Потом поиск • Ставить, конечно, Sphinx + мегаконтракт на поддержку • Всё, расходимся
  • 3. Поиск устроен вот так • Индексация – Берем документы – Извлекаем ключевые слова – Строим спецструктуру, FT index • Поиск – Берем запрос, ищем по спецструктуре – Допобработка (where/order/group, кластер, реранжирование, …)
  • 4. Данные решают все • FT index = – Словарь – Списки документов – Списки позиций – Формат хранения этого всего
  • 5. А вот наноиндекс • Словарь + списки документов: Абыр => [ 123 ] Валг => [ 123 ] Васечкин=> [ 7, 40, 42, 1917, … ] Вася => [ 3, 141, 592, 653, … ] Петров => [ 1, 2, 3, 5, 8, 13, … ] Петя => [ 2, 4, 8, 16, … ]
  • 6. Данные решают все • Элемент словаря на самом деле = – Слово – Указатель на документы/позиции • Или инлайн данные – Дополнительная метаинформация • Или никакой – Например, w=“Абыр”, docoff=1234, posoff=5678, ndocs=12, nposs=72, fieldmask=3, …
  • 7. Данные решают все • Словарь = – Обычно сортированный вектор • Круто хеш, но прощай, поиск подстрок – Обычно пожат • Абыр, Абырр, Абыррр, Абырвалг! – Эффективно с инлайнигом • Зачем ndocs=1 docsoff=1234, если можно сразу docid=9876?! – Оп, и вот сразу детали ретализации
  • 8. Данные решают все • Документы и позиции – Всегда сортированы (иначе не пересечь) Васечкин => [ 7, 40, 42, 1917, … ] Вася => [ 3, 141, 592, 653, … ] – Обычно пожаты (отдельная поднаука) – Хранятся и отдельно и вперемешку – Плюс спецфокусы! (Маски полей, битмапы, плоская нумерация, итд итп)
  • 9. Данные решают все • Lucene = docids, tfs, postings • Sphinx 2 = docids+meta, postings • Sphinx 3 = ??? docids+postings • Google, Yandex, … = ??? 
  • 10. The fuck we care?! • СКОРОСТЬ блин (и объем еще) • Например, “что” => [1,3,4,5,6,10,11,…] varint => [1,2,1,1,1,4, 1,…] x 8 bit gvi/pfd => [0,1,0,0,0,3, 0,…] x 0..2 bit • Про 0 bit тащемта не шутка!(Хотя такое щщасье случается оч редко)
  • 11. Текста мало, дайте цифер • Еще есть атрибуты • Бывают schemaful, schemaless • Хранить можно как угодно, все знают – “relational”, JSON text, BSON, … • Lucene = ФлексиТормоз!!! – По меньшей мере, была и по дефолту • Sphinx = АдскаяСмесь!!! – relational + SphinxBSON
  • 12. А к цифрам - еще цифер!!! • Атрибуты можно хранить – Тупо – Менее тупо • Со схемой: построчно, колоночно • Без схемы: K-V, иерархия, сжатие • Индексы: никаких, эмуляция, родные
  • 13. А что еще (м.Строгино!!!) • Про ранжирование • Про сегменты и весь реалтайм • Про еще отличия физики S vs L • Про разницу подходов к снаряду • Про как бенчить надо, а как будут • Про жопки в реализациях – Как зажигал [abc*] • Плюс должно быть слово КЛАСТЕР
  • 14. Про ранжирование • Если не нужно, ура, булев матчинг • Если лёгкое, BM25 (у нас +proximity) • Простая формула, ДВЕ переменные – TF, IDF по словам; плюс avg_doc_length • Если тяжёлое, всё весело – Например, 20 переменных. Или 800.
  • 15. Про сегменты и весь RT • Как устроен т.н. “реалтайм”? (здесь короче картинка такая с лысым писюном из Матрицы и типа гнутой ложкой - ну хоть не дырявой, бггг) • Его нету, есть create/merge/purge • Sphinx еще умеет update атрибутивки
  • 16. И еще про разную физику • Sphinx vs Lucene чота волнует всех • Концептуально все одинаково, но • Разные форматы индекса, атрибутов • S = общие словари, L = по полям • S = таблица атрибутов в памяти, L = документы на диске и кешкешкеш • S = микс schemaful/less, L = вроде только less
  • 17. Про подходы к снаряду – (плюс детали реализации, ага) • S = надо все уметь быстро считать • L = надо уметь отдавать из кеша!!! • S = позиции, фикс RAM, итд итп • L = ненене, булев и BM25 и кеш/RAM • S = плохо, хрен включишь кеш • L = плохо, хрен сделаешь бенчмарк • Внезапно история про Xapian!!!
  • 18. Про жопки в реализации • Здесь внезапная история про [abc*] и про старые версии – СЕГОДНЯ ВЕЗДЕ ВСЕ НОРМАЛЬНО • Старый Lucene жог, full scan словаря • Старый Sphinx жог, безлимитный expansion и “везде мелкие” буфера
  • 19. Про как надо бенчить • На оценку 3 = разные системы, одинаковый запрос, смотрим время • На оценку 4 = повторяем запрос N раз, считаем среднее время, чтобы кеш прогрело и не дрожало • На оценку 5 = выкидываем 1й прогон всегда и даже выкидываем outliers, считаем среднее без них
  • 21. Тёплое != мягкое • Где ошибка? • “берем разные системы, делаем к ним одинаковый запрос”… • Одинаковый запрос •ОДИНАКОВЫЙ ЗАПРОС, КАРЛ!
  • 22. Marketing driven defaults 1 • Sphinx = типа быстрое strict-AND, зато medium rare proximity+bm15 ранжирование • Lucene = типа медленное OR, зато lightweight bm25 ранжирование • Xapian!!! • …и это еще цветочки!!!
  • 23. Marketing driven defaults 2 • Повторные запросы? • Sphinx (*) = честно вычисляем всё заново, кешируется только дисковое чтение, и то у OS • Lucene = на всех уровнях есть внутренние кеши, некоторые невозможно отключить никак
  • 24. Marketing driven defaults 3 • Сниппеты, прям шедевр! • “А чё у вас в N раз медленнее, чем Solr?” – Поддержка синтаксиса VS bag-of-words – Произвольный текст VS только преиндексированный – И ключевая “оптимизация” про 64KB!
  • 25. Слово КЛАСТЕР похоже… • И тут внезапно такое м.Строгино