Мы рады объявить о выпуске 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 гораздо более мощным и точным для обработки детализированных и сложных поисков.
Читать больше в
блоге
:
Пример:
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 для обновления частей записей в таблице.
- Присоединение одной таблицы реального времени к другой объединяет две таблицы в одну.
- Переименуйте таблицу реального времени с помощью ALTER TABLE ... RENAME , чтобы поддерживать порядок в вашей базе данных.
Изменения, связанные с репликацией
В области репликации были внесены значительные изменения для улучшения процесса передачи данных между узлами. Исправлена ошибка репликации при передаче больших файлов, добавлен механизм повторной попытки выполнения команд, а также улучшено управление сетью во время репликации. Проблемы с блокировкой во время репликации и обновления атрибутов также были решены, и добавлена функциональность пропуска команд обновления репликации для узлов, присоединяющихся к кластеру. Все эти изменения позволяют повысить эффективность и надежность процесса репликации в различных сценариях использования.
Для получения подробной информации об изменениях смотрите здесь .
Изменение лицензии и оптимизация производительности
Мы изменили лицензию 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 теперь поддерживается.
И многое другое
Обновления, выделенные выше, являются лишь частью множества улучшений, включенных в Manticore 6.3.0. Пожалуйста, прочитайте о:
🚀 9 основных изменениях
✅ 50+ незначительных изменений
🐞 120+ исправлений ошибок
Мы надеемся, что вам понравятся новые функции и улучшения в Manticore Search. Мы приветствуем ваши отзывы и призываем вас взаимодействовать с нами,:
- Начав обсуждение на нашем Форуме сообщества
- Сообщая об ошибках или предлагая новые функции на GitHub
- Присоединившись к разговору в нашем Общем Slack-чате
- Написав нам напрямую на
[email protected]

