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

Также есть date_range и date_histogram для аналогичных агрегаций с данными даты/времени.

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

Изменения, связанные с репликацией

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

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

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

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