категории | RSS

Manticore Search 7.0.0: fuzzy search, автодополнение, Kafka, JSON индексы, Jieba, лёгкая пагинация

Мы представляем Manticore Search 7.0.0 — новую версию с интересными функциональными улучшениями, оптимизациями производительности и критическими обновлениями для повышения стабильности. Среди ключевых изменений — поддержка нечёткого поиска, автодополнения, интеграция с Kafka, новая сегментация китайского.🚨 Важная информация перед обновлением
Перед переходом на новую версию обратите внимание на следующие изменения:

Бинарные логи для отдельных таблиц (#879): Перед обновлением выполните полную остановку сервиса, так как формат бинарных логов изменился.

Обновления протокола репликации (#1789, #2308): Если используете репликацию, то следуйте инструкциям по перезапуску кластера.

Обновление в протоколе Master/agent (#2468): Если используете распределённые таблицы, то сначала обновите агенты, затем мастер-узлы.

Полный список изменений доступен в changelog'е.🔍 Нечеткий поиск и автодополнение

Прощайте, опечатки! Новая функция Fuzzy Search находит похожие термины, даже если запрос содержит ошибки, учитывает раскладки клавиатуры и легко включает. А Autocomplete предсказывает поисковые фразы в реальном времени.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)mysql> call autocomplete('gra', 'test'); +-----------+ | query | +-----------+ | gradually | | grow | | grew | | angry | | draw | | hungry | | brave | +-----------+

Обе новые функции также доступны через JSON-интерфейс.📜 Постраничная навигация с помощью Scroll

Пагинация стала проще и быстрее за счёт новой опции поиска Scroll:

SHOW SCROLL после селекта даёт токен, указывающий на то, где закончилась пагинация

option scroll='<токен>' в следующем селекте позволяет продолжить со следующего документаSELECT weight(), id FROM test WHERE match('hello') ORDER BY weight() desc, id asc limit 2; SHOW SCROLL; +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | scroll_token | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | eyJvcmRlcl9ieV9zdHIiOiJ3ZWlnaHQoKSBkZXNjLCBpZCBhc2MiLCJvcmRlcl9ieSI6W3siYXR0ciI6IndlaWdodCgpIiwiZGVzYyI6dHJ1ZSwidmFsdWUiOjEyODEsInR5cGUiOiJpbnQifSx7ImF0dHIiOiJpZCIsImRlc2MiOmZhbHNlLCJ2YWx1ZSI6MiwidHlwZSI6ImludCJ9XX0= | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) SELECT weight(), id FROM test WHERE match('hello') limit 20 OPTION scroll='eyJvcmRlcl9ieV9zdHIiOiJ3ZWlnaHQoKSBkZXNjLCBpZCBhc2MiLCJvcmRlcl9ieSI6W3siYXR0ciI6IndlaWdodCgpIiwiZGVzYyI6dHJ1ZSwidmFsdWUiOjEyODEsInR5cGUiOiJpbnQifSx7ImF0dHIiOiJpZCIsImRlc2MiOmZhbHNlLCJ2YWx1ZSI6MiwidHlwZSI6ImludCJ9XX0=';⚡ Синхронизация с Кафкой в реальном времени

Интегрируйте потоковые данные из 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

Фильтрация по атрибутам 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)📊 Производительность: Неблокирующие UPDATE'ы и слияния
Операции обновления и поиска больше не прерываются при слиянии дисковых чанков.📊 Производительность: Автоматическая очистка дисковых чанков для RT-таблиц
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 исправлениями ошибок

Полный список — в changelog.

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



Источник новости: habr.com

DimonVideo
2025-02-01T18:50:19Z

Здесь находятся
всего 0. За сутки здесь было 0 человек
Яндекс.Метрика