# Manticore Search PHPStorm support

Guide on configuring PHPStorm to work with Manticore Search. It covers the fundamental steps, from initializing Manticore Search using Docker to executing various SQL commands.

Manticore предоставляет ограниченную поддержку PHPStorm. В этой статье я опишу основные шаги настройки IDE для работы с Manticore. Я использую версию IDE 2023.2.4; поддержка может быть недоступна в более ранних или более поздних версиях.

## Инициализация

1. Запустите Manticore Search. Например, используем Docker:
```bash
docker run -p 9306:9306 --name manticore --rm -d manticoresearch/manticore:dev-6.2.13-cbf9350
```
2. Теперь нам нужно настроить источник данных. Для этого мы будем использовать драйвер MySQL, поддерживающий Manticore Search. Откройте плагин `Database -> New -> Data Source -> MySQL` и заполните поля `Port` и `Authentication`, как показано ниже:
![Заполнение источника данных](./manticoresearch-phpstorm-support/fill-data-source.png)
3. Нажмите кнопку `Test Connection`, чтобы убедиться, что источник настроен правильно.
![Проверка соединения](./manticoresearch-phpstorm-support/check-connection.png)
4. После сохранения конфигурации вкладка базы данных отобразит интерфейс для работы с Manticore Search.
![База данных после настройки источника](./manticoresearch-phpstorm-support/database-after-source-configuration.png)

## Использование Manticore Search в PHPStorm

### Создание таблиц

Для создания таблиц предпочтительно использовать консоль `Ctrl+Shift+F10`

```mysql
create table products(title text, price float) morphology='stem_en';
```

Если вы решите использовать UI, удалите базу данных `Manticore.products` из команды создания таблицы, оставив только `products`.

### INSERT

Чтобы вставить данные в Manticore через PHPStorm, вы можете использовать консоль и UI:

#### Консоль
```mysql
insert into products(title, price) values ('Crossbody Bag with Tassel', 19.85), ('microfiber sheet set', 19.99), ('Pet Hair Remover Glove', 7.99);

# 3 rows affected in 18 ms
```

#### UI
Установите значение `id` в `0` вместо значения по умолчанию `null`, если вы хотите, чтобы id генерировался автоматически.
![Вставка через UI](./manticoresearch-phpstorm-support/insert-via-ui.png)

При открытии таблицы вы можете увидеть только что добавленные данные.
![Пример вставленных данных](./manticoresearch-phpstorm-support/inserted-data.png)

### SELECT
Лучше использовать консоль для SELECT, поскольку оператор SQL `MATCH()` имеет иной формат в MySQL, и UI считает его ошибочным.
```mysql
select * from products where match('pet')
```
![Выбор с оператором match](./manticoresearch-phpstorm-support/select-match.png)

### UPDATE
Обновления следует выполнять только в консоли.
```mysql
update products set price=18.5 where id = 8217058505249521668;

# 1 row affected in 12 ms
```

### DELETE
Удаления можно выполнять только через консоль.
```mysql
delete from products where id = 8217058505249521668;

# 1 row affected in 12 ms
```

### PQ

Поддержка перколяционных запросов также реализована только на уровне консоли.

1. Создайте таблицу pq
```mysql
CREATE TABLE pq_table(title text, color string) type='pq';
```

2. Заполните данными
```mysql
INSERT INTO pq_table(query) values('@title bag');
INSERT INTO pq_table(query,filters) values('@title shoes', 'color=\'red\'');
INSERT INTO pq_table(query,filters) values('@title shoes', 'color in (\'blue\', \'green\')');
select * from pq_table;
```
![Выбор PQ](./manticoresearch-phpstorm-support/pq-select.png)

3. Выполните команду `CALL PQ`
```
CALL PQ('pq_table', 'What a nice bag', 0 as docs_json);
```
![Вызов PQ](./manticoresearch-phpstorm-support/call-pq.png)

## Заключение

В заключение, интеграция Manticore Search с PHPStorm, особенно версии 2023.2.4, представляет собой простой, но тонкий процесс. Важно помнить, что Manticore Search, хотя и доступен через MySQL IDE, такие как PHPStorm, не является самим MySQL. Это различие накладывает определённые ограничения на взаимодействие IDE с Manticore Search.
