blog-post

Manticore Search 7.0.0: Умный поиск, синхронизация в реальном времени и улучшенная производительность

Мы рады сообщить о выпуске Manticore Search 7.0.0, наполненного groundbreaking функциями, оптимизациями производительности и важными улучшениями, чтобы поднять ваш опыт поиска на новый уровень. От возможностей нечеткого поиска до бесшовной интеграции Kafka, этот релиз дает возможность разработчикам создавать более быстрые, надежные и удобные для пользователей приложения.


🚨 Важные заметки по обновлению

Перед тем как погружаться в новые функции, пожалуйста, ознакомьтесь с этими разрушительными изменениями:

  1. Бинлог на уровне таблицы ( #879 ): Выполните чистое завершение работы перед обновлением.
  2. Обновления протокола репликации ( #1789 , #2308 ): Следуйте руководству по перезапуску кластера , чтобы избежать простоя.
  3. Обновление протокола Master / agent ( #2468 ): Если вы запускаете Manticore Search в распределенной среде с несколькими экземплярами, сначала обновите агенты, затем мастеров.

Для получения всех подробностей и других разрушительных изменений обратитесь к changelog .


🔍 Нечеткий поиск и автозаполнение

Прощай, опечатки! Новый Нечеткий поиск обрабатывает орфографические ошибки, сопоставляя схожие термины, а Автозаполнение предсказывает запросы в реальном времени. Отлично подходит для электронной торговли и динамических поисковых панелей.

mysql> call autocomplete('gra', 'test');
+-----------+
| query     |
+-----------+
| gradually |
| grow      |
| grew      |
| angry     |
| draw      |
| hungry    |
| brave     |
+-----------+
mysql> SELECT * FROM mytable WHERE MATCH('someting') OPTION fuzzy=1, layouts='us,ua', distance=2;
+------+-------------+
| id   | content     |
+------+-------------+
|    1 | something   |
|    2 | some thing  |
+------+-------------+
2 rows in set (0.00 sec)

Обе новые функции также доступны через JSON интерфейс.

Прокрутка для пагинации ( #2811 )

Эффективно перемещайтесь по большим наборам данных с помощью Прокрутки , идеально подходящей для глубокой пагинации без потерь производительности.

SELECT weight(), id FROM test WHERE match('hello') limit 20
OPTION scroll='eyJvcmRlcl9ieV9zdHIiOiJ3ZWlnaHQoKSBkZXNjLCBpZCBhc2MiLCJvcmRlcl9ieSI6W3siYXR0ciI6IndlaWdodCgpIiwiZGVzYyI6dHJ1ZSwidmFsdWUiOjEyODEsInR5cGUiOiJpbnQifSx7ImF0dHIiOiJpZCIsImRlc2MiOmZhbHNlLCJ2YWx1ZSI6MiwidHlwZSI6ImludCJ9XX0=';

⚡ Синхронизация данных в реальном времени из Kafka

Синхронизируйте данные без шва из Kafka . Загружайте потоковые данные в Manticore в реальном времени, обеспечивая мгновенную возможность поиска для логов, метрик или пользовательского контента.

CREATE SOURCE kafka
(id bigint, term text, abbrev '$abbrev' text, GlossDef json)
type='kafka'
broker_list='kafka:9092'
topic_list='my-data'
consumer_group='manticore'
num_consumers='2'
batch=50

CREATE TABLE destination_kafka
(id bigint, name text, short_name text, received_at text, size multi);

CREATE MATERIALIZED VIEW view_table
TO destination_kafka AS
SELECT id, term as name, abbrev as short_name, UTC_TIMESTAMP() as received_at, GlossDef.size as size FROM kafka

📊 Производительность: вторичные индексы для JSON ( #1928 )

Ускорьте запросы, которые фильтруют по атрибутам JSON с помощью вторичных индексов для json.

ALTER TABLE users ADD COLUMN profile JSON;
ALTER TABLE users ADD secondary_index profile_json ON (profile);

Также есть новая команда SHOW TABLE INDEXES для проверки индексов:

mysql> SHOW TABLE test INDEXES;
+------------------------------+--------+---------+---------+
| Name                         | Type   | Enabled | Percent |
+------------------------------+--------+---------+---------+
| j['addresses']               | uint32 | 1       | 100     |
| j['addresses']['a1']         | uint32 | 1       | 100     |
| j['addresses']['a2']         | uint32 | 1       | 100     |
| j['factor']                  | uint32 | 1       | 100     |
| j['int_arr']                 | uint32 | 1       | 100     |
| j['tags']                    | uint32 | 1       | 100     |
| id                           | int64  | 1       | 100     |
| j['price']                   | float  | 1       | 100     |
| j['addresses']['a1']['id']   | string | 1       | 100     |
| j['addresses']['a1']['name'] | string | 1       | 100     |
| j['addresses']['a2']['id']   | string | 1       | 100     |
| j['addresses']['a2']['name'] | string | 1       | 100     |
| j['arr']                     | string | 1       | 100     |
| j['str']                     | string | 1       | 100     |
| j['tags']['1']               | string | 1       | 100     |
| j['tags']['2']               | string | 1       | 100     |
+------------------------------+--------+---------+---------+
16 rows in set (0.00 sec)

📊 Производительность: Неблокирующие обновления и слияния ( #2361 )

Больше никаких задержек запросов во время слияний дисковых кусков! Обновления и поиски теперь выполняются непрерывно, пока дисковые куски оптимизируются.


📊 Производительность: Автоматическая очистка дисковых кусков для RT таблиц ( #2787 )

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

Вы можете контролировать это для каждой таблицы или для всей таблицы с помощью настройки diskchunk_flush_write_timeout .


🌍 Токенизация китайского текста Jieba ( #931 )

Достигайте точного анализа китайского текста с помощью интеграции Jieba .

CREATE TABLE products(title text, price float) charset_table = 'cont' morphology = 'jieba_chinese'

И многое другое

Обновления, упомянутые выше, являются лишь частью множества улучшений, включенных в Manticore 7.0.0. Пожалуйста, ознакомьтесь с:

🚀 7 основными изменениями
✅ 49 незначительными изменениями
🐞 63 исправлениями ошибок

в журнале изменений .


🚀 Начните уже сегодня

Обновитесь до Manticore Search 7.0.0, чтобы воспользоваться этими мощными новыми функциями. Для полного списка изменений посетите журнал изменений .

Мы будем рады услышать от вас!

  • Присоединяйтесь к обсуждению на нашем Форуме Сообщества
  • Сообщайте о проблемах или предлагайте функции на GitHub
  • Общайтесь с нами в Slack

Особая благодарность участникам @subnix , @animetosho , Алексею Иванову и всем, кто помогал в подготовке этого релиза! ❤️

Установить Manticore Search

Установить Manticore Search