Мы рады объявить о выпуске Manticore Search 6.3.0! Эта версия приносит множество улучшений, новых функций и обновлений, делая ваш поисковый движок ещё более мощным и удобным.
Векторный поиск
- Float vector data type: Мы внедрили тип данных float_vector , который позволяет хранить и выполнять запросы к массивам чисел с плавающей точкой. Это особенно полезно для приложений, которым необходимо выполнять поиск похожих объектов с помощью векторного поиска.
- Vector search capability: В сочетании с новым типом данных функция векторного поиска позволяет выполнять k‑ближайших соседей (KNN) векторные запросы. Это идеально подходит для создания более интуитивных и отзывчивых функций поиска в приложениях. Подробнее в блоге Векторный поиск в Manticore .
JOIN (beta)
Добавление возможностей JOIN в Manticore Search, хотя и находящееся ещё в бета‑версии, представляет собой значительное улучшение способов выполнения запросов пользователями и управления отношениями данных. Подробнее в документации .
Пример:
SELECT product, customers.email, customers.name, customers.address
FROM orders
LEFT JOIN customers
ON customers.id = orders.customer_id
WHERE MATCH('maple', customers)
ORDER BY customers.email ASC;
+----------+-------------------+----------------+-------------------+
| product | customers.email | customers.name | customers.address |
+----------+-------------------+----------------+-------------------+
| Phone | NULL | NULL | NULL |
| Monitor | NULL | NULL | NULL |
| Keyboard | NULL | NULL | NULL |
| Laptop | alice@example.com | Alice Johnson | 123 Maple St |
| Tablet | alice@example.com | Alice Johnson | 123 Maple St |
+----------+-------------------+----------------+-------------------+
5 rows in set (0.00 sec)
REGEX
Новый оператор REGEX значительно улучшает возможность поиска сложных текстовых шаблонов. Эта функция особенно важна в областях, требующих очень точных результатов поиска, таких как анализ патентов, проверка контрактов и поиск товарных знаков.
Например, в аналитике данных оператор REGEX может помочь найти конкретные коды ошибок или программные шаблоны в файлах журналов или коде. В академических исследованиях он упрощает поиск статей, использующих определённые стили цитирования. При поиске товарных знаков этот инструмент отлично подходит для обнаружения знаков, которые полностью совпадают или очень похожи. Это улучшение делает Manticore Search гораздо более мощным и точным для выполнения детальных и сложных поисков.
Подробнее в
посте блога
:
Пример:
SELECT * FROM brands WHERE MATCH('"REGEX(/(c|sea).*crest/) REGEX(/flo(we|u)r/)"')
+---------------------+-----------------+
| id | name |
+---------------------+-----------------+
| 1515699435999330620 | SeaCrest Flower |
| 1515699435999330621 | C-Crest Flour |
| 1515699435999330622 | CCrest Flower |
+---------------------+-----------------+
Range() и histogram()
Новая
RANGE функция
улучшает агрегацию, фасетирование и группировку, классифицируя значения по заданным интервалам. Эти интервалы определяются с помощью range_from и range_to, которые задают границы, в которых находятся значения. Эта функциональность позволяет эффективно сортировать и анализировать данные на основе пользовательских диапазонов.
Пример:
select * from test;
+---------------------+-----------+-------+
| id | data | value |
+---------------------+-----------+-------+
| 8217240980223426563 | Product 1 | 12 |
| 8217240980223426564 | Product 2 | 15 |
| 8217240980223426565 | Product 3 | 23 |
| 8217240980223426566 | Product 4 | 3 |
+---------------------+-----------+-------+
SELECT COUNT(*), RANGE(value, {range_to=10},{range_from=10,range_to=25},{range_from=25}) price_range FROM test GROUP BY price_range ORDER BY price_range ASC;
+----------+-------------+
| count(*) | price_range |
+----------+-------------+
| 1 | 0 |
| 3 | 1 |
+----------+-------------+
Функция
HISTOGRAM()
в Manticore Search классифицирует данные в корзины на основе указанного размера корзины. Она возвращает номер корзины для каждого значения, используя параметры hist_interval и hist_offset для определения соответствующей корзины. Функция вычисляет ключ корзины, измеряя расстояние от начальной точки корзины, скорректированное на размер интервала. Эта возможность особенно полезна для создания гистограмм, которые группируют данные в определённые диапазоны значений для упрощённого анализа и визуализации.
Пример:
select count(*), histogram (value, {hist_interval=10}) as price_range from test GROUP BY price_range ORDER BY price_range ASC;
+----------+-------------+
| count(*) | price_range |
+----------+-------------+
| 1 | 0 |
| 2 | 10 |
| 1 | 20 |
+----------+-------------+
Также доступны date_range и date_histogram для аналогичных агрегаций с данными даты/времени.
Новые команды для упрощения обновления данных и управления схемой
- ALTER TABLE ... type='distributed' позволяет изменить распределённую таблицу без необходимости её предварительного удаления.
- CREATE TABLE ... LIKE ... WITH DATA упрощает копирование таблицы реального времени вместе со всеми её данными.
- Используйте REPLACE INTO ... SET для обновления отдельных частей записей в таблице.
- Attaching one real-time table to another объединяет две таблицы в одну.
- Переименуйте таблицу реального времени с помощью ALTER TABLE ... RENAME , чтобы поддерживать порядок в базе данных.
Изменения, связанные с репликацией
В области репликации внесены значительные изменения, направленные на улучшение процесса передачи данных между узлами. Исправлена ошибка репликации при передаче больших файлов, добавлен механизм повторного выполнения команд, улучшено управление сетью во время репликации. Также решены проблемы блокировки во время репликации и обновления атрибутов, а для узлов, присоединяющихся к кластеру, добавлена возможность пропуска команд обновления репликации. Все эти изменения повышают эффективность и надёжность процесса репликации в различных сценариях использования.
Подробную информацию об изменениях см. здесь .
Изменение лицензии и оптимизация производительности
Мы изменили лицензию Manticore Search на GPLv3-or-later. Эта новая лицензия обеспечивает лучшую юридическую защиту пользователей и лучше совместима с другими открытыми лицензиями. Это изменение демонстрирует нашу приверженность удовлетворять потребности сообщества и поддерживать силу открытого программного обеспечения. В версии 6.3.0 мы добавили библиотеку CCTZ library под лицензией Apache 2, которая делает функции даты/времени гораздо быстрее. Посмотрите на улучшение:
До:
mysql> select count(*),year(time_local) y, month(time_local) m from logs10m where y>2010 and m<5;
+----------+------+------+
| count(*) | y | m |
+----------+------+------+
| 10365132 | 2019 | 1 |
+----------+------+------+
1 row in set (8.26 sec)
Теперь:
mysql> select count(*),year(time_local) y, month(time_local) m from logs10m where y>2010 and m<5;
+----------+------+------+
| count(*) | y | m |
+----------+------+------+
| 10365132 | 2019 | 1 |
+----------+------+------+
1 row in set (0.11 sec)
Запрос теперь в 75 раз быстрее.
Мы также улучшили процесс компактирования таблиц. Раньше при объединении дисковых чанков Manticore удалял удалённые документы из всех чанков, где они находились, используя много ресурсов. Мы прекратили использовать этот метод. Теперь объединение чанков управляется только настройкой progressive_merge , что упрощает процесс и снижает нагрузку на ресурсы.
Ubuntu Noble 24.04
Ubuntu Noble 24.04 теперь поддерживается.
И многое другое
Вышеуказанные обновления — лишь часть множества улучшений, включённых в Manticore 6.3.0. Пожалуйста, ознакомьтесь с:
🚀 9 основных изменений
✅ более 50 мелких изменений
🐞 более 120 исправлений ошибок
Мы надеемся, что вам понравятся новые функции и улучшения в Manticore Search. Мы приветствуем ваши отзывы и призываем вас взаимодействовать с нами через:
- Начните обсуждение на нашем Форуме сообщества
- Сообщайте об ошибках или предлагайте новые функции на GitHub
- Присоединяйтесь к разговору в нашем Публичном Slack-чате
- Пишите нам напрямую на
[email protected]

