Мы рады объявить о выпуске 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 )
Для полного списка изменений, пожалуйста, обратитесь к заметкам о выпуске .