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

Mike: learning: First steps

Обо мне

Mike

Привет, я Майк.

Я недавно начал работать в Manticore в качестве Developer Advocate. Я человек, который не полностью оторван от ИТ, но я догоняю современные технологии. В этом блоге я буду делиться своим опытом и тем, что узнаю о Manticore. Я планирую документировать своё путешествие в формате дневника, объясняя, что такое Manticore и как его использовать. Давайте узнаем, как всё работает вместе, выявим проблемы и будем взаимодействовать с разработчиками в реальном времени.

Это мой первый пост в блоге. Если вам интересно изучать Manticore вместе со мной, я буду держать вас в курсе в:

Несколько слов о Manticore

Когда я начал изучать Manticore Search, я обнаружил, что это мощная открытая база данных. Она может выполнять быстрый полнотекстовый поиск с использованием как SQL, так и JSON, и многое другое. Она была создана в 2017 году и с тех пор прошла множество тестов и улучшений. Благодаря сильному сообществу было исправлено множество багов, и сейчас она работает очень хорошо.

Manticore отлично подходит для быстрого поиска слов, фраз и предложений, а также имеет множество других продвинутых функций. Это делает её идеальной для таких задач, как онлайн-магазины и корпоративные поисковые системы. Благодаря множеству полезных возможностей и поддержке сообщества и команды Manticore Software, легко понять, почему многие выбирают Manticore для своих поисковых нужд.

В этой статье я покажу, как начать работу с Manticore

С чего начать

Минимальная среда

  • Интернет
  • Не слишком старая ОС (Mac, Win или Lin — не имеет значения)
  • Docker или Docker Desktop.
  • Относительно прямые руки
  • Сильное желание сделать мир лучше, создавая качественное, простое в использовании программное обеспечение с быстрыми базами данных и поисковыми системами для полнотекстовой информации.

Инструменты

  • Консоль (или вы можете использовать Docker Desktop для подключения к контейнеру)
  • Файловый менеджер (по желанию, мне нравится Midnight Commander )
  • Текстовый редактор для консоли (например, mcedit, nano, vim). В примерах мы будем использовать редактор, встроенный в Midnight Commander, mcedit, чтобы не искать команды выхода для vim.

При использовании MC вам не нужно устанавливать редактор, так как встроенного достаточно. Если установлен дополнительный редактор, при первом выполнении команды [F4 Edit] MC предложит выбрать нужный. В примере будет использоваться встроенный редактор MC, который вызывается нажатием [F4] при выборе файла в интерфейсе или командой mcedit <имя файла для создания/открытия>.

Более быстрый способ — делать всё из командной строки. Я хочу быстро!

Развёртывание инфраструктуры

Мы будем проводить эксперименты с Manticore в Docker‑контейнере, так как это популярное кроссплатформенное решение, часто используемое в среде, где Manticore наиболее востребован, хотя существуют версии базы данных для всех популярных операционных систем.

Те профессионалы, которые уже умеют работать с Docker, могут пропустить это до запуска контейнера. А новички, включая меня, пройдём шаги с нуля.

Для начала вам нужно выполнить следующие шаги:

  1. Скачайте Docker Desktop для нашей платформы с сайта https://www.docker.com/ :
    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

Далее вернитесь на вкладку контейнеров. Мы найдём наш контейнер в списке активных контейнеров. В выпадающем меню есть опция «Open in terminal». Откроется окно с терминалом, напрямую подключённым к вашему контейнеру.
View of terminal connection button in Docker Desktop
Поздравляем, вы успешно установили Docker‑образ Manticore Search на свой компьютер.
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, потому что мы пытаемся подключиться к localhost. Используйте флаг -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)

Удаление записей можно выполнять так же, как запросы SELECT:

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