Мы рады объявить о релизе Manticore Search 3.3.0. Скачать можно здесь . Образ Docker доступен на Docker Hub .
Новые функции
Многопоточный RT
Одной из 2 основных функций в 3.3.0 является многопоточный поиск для индексов в реальном времени. В случае индекса в реальном времени с несколькими дисковыми частями (что часто происходит, если вы редко запускаете OPTIMIZE ), использование dist_threads > 1 позволит поиску использовать несколько потоков для параллельного поиска в дисковых частях. До сих пор каждый RT индекс использовал один поток, и если у него было несколько дисковых частей, все они искались по одной, что замедляло поиск (или очень замедляло). Если ваше приложение не ограничено по ЦП, новая функциональность может значительно увеличить вашу производительность. Производительность может быть даже выше, чем после OPTIMIZE.
CREATE TABLEα и DROP TABLEα
Еще одной основной функцией, доступной с 3.3.0, является поддержка CREATE и DROP TABLE. С этого момента, если вы используете индексы в реальном времени (что мы настоятельно рекомендуем), вам может не понадобиться конфигурация для них вовсе. Вот как может выглядеть ваша конфигурация сейчас:
searchd {
listen = 9306:mysql41
data_dir = data
pid_file = 9306.pid
binlog_path = data
}
И все. После этого, чтобы создать индекс, просто выполните
mysql> create table idx(f field, a int);
Query OK, 0 rows affected (0.00 sec)
и ваш индекс будет создан:
mysql> desc idx;
+-------+--------+----------------+
| Field | Type | Properties |
+-------+--------+----------------+
| id | bigint | |
| f | field | indexed stored |
| a | uint | |
+-------+--------+----------------+
3 rows in set (0.00 sec)
Затем просто удалите его, когда он не нужен:
mysql> drop table idx;
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
Empty set (0.00 sec)
Это означает, что теперь из вашего приложения легко управлять не только вашими данными, но и вашей схемой. Разве это не здорово?
Внимание: эта функция находится на стадии альфа. Она еще не задокументирована, синтаксис может изменить незначительно, и мы не знаем никого, кто использует ее в производственной среде. Если вы хотите стать бета-тестером - дайте нам знать, мы будем работать вместе, чтобы убедиться, что она работает правильно.
Чтобы использовать эту функцию, в конфигурации не должно быть определений индексов/источников, а data_dir должен быть установлен, как в примере ниже. Этот режим не поддерживает простые индексы.
Существующие настройки работают как прежде, но вы не можете использовать команду CREATE/DROP TABLE там.
indexer --print-rt
Indexer теперь имеет новую опцию –print-rt, которая выводит данные из простого исходного индекса в виде команд INSERT для индекса в реальном времени. В дополнение к этому, схема данных предоставляется в виде полей/атрибутов в реальном времени.
EXPLAIN QUERY
EXPLAIN QUERY — это команда для возврата дерева выполнения полнотекстового запроса, подобно SHOW PLAN , но в отличие от этого, она не проводит фактический поиск по индексу, и индекс может быть пустым или даже шаблонным. Вот пример:
mysql> explain query idx 'abc "def ghi" "a b c d"~5 I'\G
*************************** 1. row ***************************
Variable: transformed_tree
Value: AND(
AND(KEYWORD(abc, querypos=1)),
PHRASE(
AND(KEYWORD(def, querypos=2)),
AND(KEYWORD(ghi, querypos=3))),
PROXIMITY(distance=5,
AND(KEYWORD(b, querypos=4)),
AND(KEYWORD(c, querypos=5)),
AND(KEYWORD(d, querypos=6))))
1 row in set (0.00 sec)
Другие улучшения
- Обновлено до библиотеки стемминга Snowball 2.0 . Это увеличивает количество стеммеров до 25 , все они включены в наши пакеты
- Команда SHOW INDEX STATUS получила LIKE для более простого фильтрации
- Использование памяти было значительно улучшено для запросов с высоким max_matches по распределенным индексам
- Для пакетов systemd мы изменили LimitNOFILE с ‘infinity’ на 65536
- Percolate Queries теперь выполняются без блокировок - в предыдущих версиях длительный CALL PQ или обновление сохраненных запросов вмешивались друг в друга
В этой версии было исправлено несколько ошибок, чтобы назвать некоторые:
- Проблемы с
HIGHLIGHT()
с макросом passage ( 493a5e9 ) и удаление HTML ( ca81114 ) - В некоторых случаях RT индексы создавали слишком много дисковых частей ( 8bea0f6 , a82d41c)
- проблемы с docstore при использовании с ATTACH ( 6895374 ) и распределенными индексами ( d6f696e )
Для полного списка изменений, пожалуйста, ознакомьтесь с заметками о выпуске .