About me

Привет, я Майк.
Я недавно начал работать в 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, можно пропустить это до запуска контейнера. Ну а новичкам и мне мы пройдем шаги запуска с нуля.
Для начала вам нужно выполнить следующие шаги:
- Скачайте Docker Desktop для нашей платформы с сайта
https://www.docker.com/
:

- После установки нам нужно загрузить официальный образ Manticore. В верхней панели приложения есть строка поиска. Просто введите "ManticoreSearch" в нее.
- В выводе у нас есть "manticoresearch/manticore".

- Нажмите кнопку "pull", затем переключитесь на вкладку изображений.
- А затем мы выбираем новый образ, который только что загрузили, и нажимаем "play".
В появившемся окне вам нужно ввести некоторые дополнительные настройки:
- Имя контейнера:
manticore. - Для портов давайте просто используем тот же порт, что и для базы данных, для простоты, который равен
9306. - В переменных окружения установите переменную
EXTRAсо значением1. Это необходимо для запуска дополнительных компонентов, которые очень полезны. Узнайте больше об этом здесь .
А затем нажмите "Run"
Далее вернитесь на вкладку контейнера. Мы найдем наш контейнер в списке активных контейнеров. В выпадающем меню есть опция "Open in terminal". Появится окно с терминалом, который напрямую подключен к вашему контейнеру.
Поздравляю, вы успешно установили образ Manticore Search docker на своем компьютере.
После того как вы немного поиграетесь с интерфейсом Docker Desktop, вы поймете, что самый быстрый способ сделать все - это через командную строку.docker run --name manticore -p 9306:9306 -d manticoresearch/manticoredocker exec -it manticore /bin/sh
- Чтобы упростить задачу, мы установим файловый менеджер Midnight Commander внутри контейнера:
apt update
apt install mc
mc
Итак, мы обновили менеджер пакетов "apt", затем установили файловый менеджер "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 | 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;
На сегодня это все, в следующий раз мы увидим как изменить файл форм слов в существующей таблице и как обновить наши записи.

