blog-post

Mike: learning: First steps

About me

Mike

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

Я недавно начал работать в Manticore в качестве Developer Advocate. Я человек, не совсем далекий от ИТ, но я догоняю современные технологии. В этом блоге я поделюсь своим опытом и тем, чему я научусь о 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

Мы будем проводить эксперименты с 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”, затем переключитесь на вкладку images.
  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” и запустили его.
Теперь ваш терминал должен выглядеть так:
Терминал с файловым менеджером mc

Первый шаг. Первая таблица.

Итак, давайте подключимся к базе данных и создадим нашу первую таблицу.

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      | индексированное хранимое |
| 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;

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

конечное фото

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

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