⚠️ 此页面为自动翻译,翻译可能不完美。

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版本中的两个主要功能之一是对实时索引的多线程搜索。在实时索引包含多个磁盘块的情况下(这通常发生在你很少运行 OPTIMIZE 时),使用 dist_threads > 1将启用多线程并行搜索磁盘块。此前每个RT索引仅使用单一线程,如果它有多个磁盘块,所有块都会逐个搜索,导致搜索速度变慢(甚至非常慢)。如果你的应用程序不是CPU密集型的,新功能可以显著提升性能。性能甚至可能比执行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)

这意味着现在从你的应用程序中,不仅能够轻松控制数据,还能控制模式。这不是很棒吗?
注意:此功能处于alpha阶段。尚未文档化,语法可能会有细微变化,我们不知道有人在生产环境中使用它。如果你想成为beta测试者,请告诉我们,我们将共同努力确保其正常工作。

要使用此功能,配置文件中不能有任何索引/源定义,并且需要像下面的示例一样设置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 )
  • 在某些情况下,实时索引创建了过多的磁盘块 ( 8bea0f6 , a82d41c)
  • 与ATTACH一起使用时的docstore问题 ( 6895374 ) 和分布式索引 ( d6f696e )

如需完整的变更日志,请参阅 发布说明

安装Manticore Search

安装Manticore Search