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

Manticore Search 3.3.0: 多线程实时搜索,创建表,解释查询等

我们很高兴地宣布 Manticore Search 3.3.0 的发布。下载链接可在 这里 获取。Docker 镜像可在 Docker Hub 获取。

新特性

多线程实时搜索

3.3.0 中的 2 个主要特性之一是 实时索引的多线程搜索。在具有多个磁盘块的实时索引的情况下(如果您很少运行 OPTIMIZE ,这种情况经常发生),使用 dist_threads > 1 将使搜索能够在磁盘块中并行使用多个线程进行搜索。到目前为止,每个实时索引使用的是单线程,如果它有多个磁盘块,则所有磁盘块都是逐个搜索,这使得搜索变得缓慢(或非常缓慢)。如果您的应用程序不是 CPU 绑定,新功能可以显著提高您的性能。性能甚至可能高于 OPTIMIZE 之后的性能。

CREATE TABLEα 和 DROP TABLEα

自 3.3.0 以来,另一个主要特性是 支持创建和删除表。从现在开始,如果您使用实时索引(我们强烈推荐),您可能根本不需要为它们配置。以下是您当前配置的样子:

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() 与段落宏的问题 ( 493a5e9 ) 和 HTML 剥离 ( ca81114 )
  • 在某些情况下,RT 索引创建了过多的磁盘块 ( 8bea0f6 , a82d41c)
  • 使用 ATTACH 时的文档存储问题 ( 6895374 ) 和分布式索引 ( d6f696e )

有关完整的变更日志,请查阅 发布说明

安装Manticore Search

安装Manticore Search