blog-post

Mike: learning: First steps

About me

Mike

你好,我是Mike。

我最近开始在Manticore担任开发者倡导者。我是一个与IT并不完全陌生的人,但我正在赶上现代技术。在这个博客中,我将分享我的经验和我对Manticore的学习。我计划以日记的形式记录我的旅程,解释Manticore是什么以及如何使用它。让我们一起发现事物是如何协同工作的,识别问题,并与开发者实时互动。

这是我的第一篇博客文章。如果您有兴趣与我一起学习Manticore,我会在以下平台上保持更新:

A few words about Manticore

当我开始学习Manticore Search时,我发现它是一个强大的开源数据库。它可以使用SQL和JSON进行快速的全文搜索,还有更多功能。它于2017年创建,自那时以来经过了大量的测试和改进。得益于强大的社区,许多错误得到了修复,现在运行得非常好。

Manticore非常适合快速查找单词、短语和句子,并且它还有许多其他高级功能。这使得它非常适合在线商店和企业搜索系统等应用。凭借众多有用的功能以及来自社区和Manticore Software团队的支持,很多人选择Manticore作为他们的搜索需求。

在这篇文章中,我将向您展示如何开始使用Manticore

Where to start

Minimal environment

  • 互联网
  • 不太旧的操作系统(Mac、Win或Lin - 没关系)
  • Docker或Docker Desktop。
  • 相对灵活的手臂
  • 强烈的愿望,通过创建高质量、易于使用的软件以及快速的数据库和全文信息搜索系统来改善世界。

Tools

  • 控制台(或者您可以使用Docker Desktop连接到容器)
  • 文件管理器(可选,我喜欢 Midnight Commander
  • 控制台文本编辑器(例如,mcedit、nano、vim)。在示例中,我们将使用内置于Midnight Commander的编辑器mcedit,以避免需要查找vim的退出命令。

使用MC时,您无需安装编辑器,因为内置的编辑器就足够了。如果安装了其他编辑器,第一次执行[F4 Edit]命令时,MC会提示您选择所需的编辑器。示例将使用内置的MC编辑器,可以通过在界面中选择文件时按[F4]或使用mcedit <文件名以创建/打开>命令来调用。

更快的方法是通过命令行完成所有操作。 我想要快速!

Infrastructure deployment

我们将在Docker容器中进行Manticore的实验,因为这是一个流行的跨平台解决方案,通常在Manticore需求最旺盛的环境中使用,尽管该数据库有适用于所有流行操作系统的版本。

那些已经知道如何使用docker的专业人士可以跳过,直到容器启动。好吧,新手和我将从头开始逐步进行。

首先,您必须完成以下步骤:

  1. 从网站 https://www.docker.com/ 下载适用于我们平台的Docker Desktop:
    Docker Desktop download page
  2. 安装后,我们需要获取官方的Manticore镜像。在应用程序的顶部栏中,有一个搜索栏。只需在其中输入“ManticoreSearch”。
  3. 在输出中,我们有“manticoresearch/manticore”。
    Image about vision of manticore ManticoreSearch
  4. 点击“pull”按钮,然后切换到镜像选项卡。
  5. 然后我们选择刚刚下载的新镜像并点击“play”。

在弹出的窗口中,您需要输入一些额外的设置:

  • 容器名称:manticore
  • 对于端口,为了简单起见,我们就使用与数据库相同的端口,即9306
  • 在环境变量中,设置变量EXTRA,值为1。这对于运行非常有用的辅助组件是必需的。了解更多信息 这里

然后点击“Run”
Settings and run for Manticore docker image

接下来,返回到容器选项卡。我们将在活动容器列表中找到我们的容器。在下拉菜单中,有一个“在终端中打开”的选项。将弹出一个窗口,显示一个直接连接到您的容器的终端。
View of terminal connection button in Docker Desktop
恭喜,您已成功在计算机上安装Manticore Search docker镜像。
Terminal in Docker Desktop


在Docker Desktop界面上玩了一会儿后,您会意识到通过命令行完成事情是最快的方式。
docker run --name manticore -p 9306:9306 -d manticoresearch/manticore
docker exec -it manticore /bin/sh

  1. 为了简化操作,我们将在容器内安装Midnight Commander文件管理器:
apt update
apt install mc
mc

所以,我们更新了“apt”包管理器,然后安装了“mc”文件管理器并启动了它。
现在,您的终端应该看起来像这样:
Terminal with mc file manager

第一步。第一个表。

好的,让我们连接到数据库并创建我们的第一个表。

mysql -h0 -P9306

这里是用于主机连接的 -h 标志,设置为 0,因为我们尝试连接到本地主机。使用 -P 标志(注意大写的 P)进行端口连接;我们使用内部端口号。

让我们创建一个包含“info”字段作为文本和“value”字段作为整数的表。此外,让我们为英语单词增强这个表的词干提取器。

CREATE TABLE demo (info TEXT, value INT) morphology = 'stem_en';
Query OK, 0 rows affected (0.00 sec)

要查看在创建或更改表列时创建了哪些字段,请使用 desc 命令(它就像一个“描述”)。

DESC demo
+-------+-----------+------------------+
| Field | Type      | Properties       |
+-------+-----------+------------------+
| id    | bigint    |                  |
| info  | text      | indexed stored   |
| value | uint      |                  |
+-------+-----------+------------------+

3 rows in set (0.00 sec)

此外,您还可以检查与表相关联的词干提取或词形还原算法:

SHOW TABLE demo SETTINGS;
+---------------+-----------------------+
| Variable_name | Value                 |
+---------------+-----------------------+
| settings      | morphology = stem_en  |
+---------------+-----------------------+

1 row in set (0.01 sec)

让我们向表中添加数据。下面是一次添加一条记录的选项:

INSERT INTO demo (info, value) VALUES ('Walking down the street', 1);

Query OK, 1 row affected (0.01 sec)

这是如何批量添加记录的:

INSERT INTO demo (info, value) VALUES ('Walking along the embankment', 2), ('Walking the dog', 3), ('Reading a book', 4), ('Book read ', 5);

Query OK, 3 rows affected (0.00 sec)

现在让我们检查一下我们在表中写了什么:

SELECT * FROM demo;

+-----------------------+----------------------------------------------------+-------+
| id                    | info                                               | value |
+-----------------------+----------------------------------------------------+-------+
| 8217204862853578790   | Walking down the street                            |     1 |
| 8217204862853578791   | Walking along the embankment                       |     2 |
| 8217204862853578792   | Walking the dog                                    |     3 |
| 8217204862853578793   | Reading a book                                     |     4 |
| 8217204862853578794   | Book read                                          |     5 |
+-----------------------+----------------------------------------------------+-------+

5 rows in set (0.01 sec)

让我们搜索一个与添加的单词意义相近的词:

SELECT * FROM demo WHERE match('read');

+---------------------+-----------------------------------+-------+
| id                  | info                              | value |
+---------------------+-----------------------------------+-------+
| 8217204862853578794 | Book read                         |     5 |
| 8217204862853578793 | Reading a book                    |     4 |
+---------------------+-----------------------------------+-------+

2 rows in set (0.01 sec)

您还可以查看找到记录的关键字、它们的数量、文档等:

SHOW META;

+----------------+----------+
| Variable_name  | Value    |
+----------------+----------+
| total          | 2        |
| total_found    | 2        |
| total_relation | eq       |
| time           | 0.000    |
| keyword[0]     | read     |
| docs[0]        | 2        |
| hits[0]        | 2        |
+----------------+----------+

7 rows in set (0.01 sec)

要处理不参与全文搜索的字段属性,您可以使用经典的 SQL 过滤语句:

SELECT * FROM demo WHERE value > 3;

+---------------------+-----------------------------------+-------+
| id                  | info                              | value |
+---------------------+-----------------------------------+-------+
| 8217204862853578794 | Book read                         |     5 |
| 8217204862853578793 | Reading a book                    |     4 |
+---------------------+-----------------------------------+-------+

2 rows in set (0.01 sec)

删除记录可以像选择查询一样进行:

DELETE FROM demo WHERE value = 5;

Query OK, 1 row affected (0.01 sec)

DELETE FROM demo WHERE match ('street');

Query OK, 1 row affected (0.01 sec)

DELETE FROM demo WHERE id = 8217204862853578791;

Query OK, 1 row affected (0.00 sec)

SELECT * FROM demo;

+---------------------+---------------------------------+-------+
| id                  | info                            | value |
+---------------------+---------------------------------+-------+
| 8217204862853578792 | Walking the dog                 |     3 |
| 8217204862853578793 | Reading a book                  |     4 |
+---------------------+---------------------------------+-------+

2 rows in set (0.00 sec)

为什么不试着添加和搜索一些记录呢?完成后,我们可以继续下一个内容。
别忘了断开连接:

exit;

今天就到这里,下次我们将看到 如何在现有表中更改词形文件 以及如何更新我们的记录。

end photo

安装Manticore Search

安装Manticore Search