blog-post

Manticore Search 6.3.0

Мы рады сообщить о релизе Manticore Search 6.3.0! Эта версия предлагает множество улучшений, новых функций и обновлений, что делает ваш поисковый движок еще более мощным и удобным для пользователей.

Векторный поиск

  • Тип данных вектор с плавающей запятой: Мы представили тип данных float_vector , который позволяет вам хранить и запрашивать массивы чисел с плавающей запятой. Это особенно полезно для приложений, которые требуют выполнения поисков по сходству с использованием векторного поиска.
  • Возможность векторного поиска: В паре с новым типом данных, функция векторного поиска позволяет вам выполнять поиск K-ближайших соседей (KNN). Это идеально подходит для создания более интуитивных и отзывчивых функций поиска в приложениях. Узнайте больше в блоге Векторный поиск в Manticore .

Векторный поиск блог

JOIN (бета)

Добавление возможностей 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 гораздо более мощным и точным для обработки детализированных и сложных запросов.

Читать далее в блоге :
Блог о REGEXP

Пример:

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 |
+----------+-------------+

There are also date_range and date_histogram for similar aggregations with date/time data.

Новые команды для упрощения обновления данных и управления схемами

Изменения, касающиеся репликации

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

Для получения подробной информации об изменениях смотрите здесь .

Изменение лицензии и оптимизация производительности

Мы изменили лицензию Manticore Search на GPLv3 или более позднюю. Эта новая лицензия предлагает лучшую правовую защиту для пользователей и лучше работает с другими лицензиями с открытым исходным кодом. Это изменение подчеркивает нашу преданность удовлетворению потребностей сообщества и поддержанию силы программного обеспечения с открытым исходным кодом. В версии 6.3.0 мы добавили библиотеку CCTZ с лицензией 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.
Noble

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

Вышеупомянутые обновления — это лишь часть многих улучшений, включенных в Manticore 6.3.0. Пожалуйста, прочитайте о:

🚀 9 крупных изменениях
✅ 50+ мелких изменениях
🐞 120+ исправлений ошибок

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

Мы надеемся, что вам понравятся новые функции и улучшения в Manticore Search. Мы приветствуем ваши отзывы и призываем вас взаимодействовать с нами, став частью сообщества:

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

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