⚠️ Эта страница автоматически переведена, и перевод может быть несовершенным.

Manticore Search 3.3.0: multi-threaded RT, CREATE TABLE, EXPLAIN QUERY and more

Мы рады объявить о выпуске Manticore Search 3.3.0. Скачать можно здесь . Docker‑образ доступен на Docker Hub .

Новые возможности

Многопоточный RT

Одна из двух основных функций в версии 3.3.0 — многопоточный поиск для индексов Real-Time. В случае Real-Time индекса с несколькими дисковыми чанками (что часто происходит, если вы редко запускаете OPTIMIZE ), использование dist_threads > 1 позволит поиску использовать несколько потоков для параллельного поиска в дисковых чанках. До сих пор каждый RT‑индекс использовал один поток, и если у него было несколько дисковых чанков, они просматривались последовательно, что делало поиск медленным (или очень медленным). Если ваше приложение не ограничено процессором, новая функциональность может значительно повысить производительность. Производительность может быть даже выше, чем после OPTIMIZE.

CREATE TABLEα и DROP TABLEα

Еще одна важная функция, доступная с версии 3.3.0, — поддержка CREATE и DROP TABLE. Начиная с сейчас, если вы используете Real‑time индексы (что мы настоятельно рекомендуем), вам может вовсе не потребоваться конфигурация для них. Вот как может выглядеть ваша конфигурация сейчас:

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)

Это означает, что теперь из вашего приложения легко управлять не только данными, но и схемой. Разве это не здорово?
Внимание: эта функция находится в альфа‑стадии. Она ещё не документирована, синтаксис может незначительно измениться, и нам неизвестны пользователи, использующие её в продакшене. Если вы хотите стать бета‑тестером — дайте нам знать, мы будем работать вместе, чтобы убедиться, что всё работает корректно.

Чтобы использовать эту функцию, конфигурация не должна содержать определений index/source, а data_dir необходимо задать, как показано в примере ниже. Этот режим не поддерживает обычные индексы.

Существующие настройки работают как прежде, но использовать команду CREATE/DROP TABLE в них нельзя.

indexer --print-rt

Indexer теперь имеет новую опцию --print-rt, которая выгружает данные из обычного источника индекса в виде команд INSERT для Real‑Time индекса. Вместе с этим схема данных предоставляется как поля/атрибуты Real‑Time.

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 , все они включены в наши packages
  • Оператор SHOW INDEX STATUS получил оператор LIKE для более удобной фильтрации
  • Потребление памяти значительно улучшено для запросов с высоким значением [max_matches]( https://docs.manticore
  • For systemd packages we've changed LimitNOFILE from 'infinity' to 65536
  • Percolate Queries are now lockless - in previous versions, a long CALL PQ or update to stored queries would interfere each other

A number of bugs have been fixed in this release, to name a few:

  • HIGHLIGHT() issues with passage macro ( 493a5e9 ) and html stripping ( ca81114 )
  • in some cases RT indexes created too many disk chunks ( 8bea0f6 , a82d41c)
  • docstore issues when used with ATTACH ( 6895374 ) and distributed indexes ( d6f696e )

For full change log please consult the release notes .

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

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