# 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. 现在我们需要配置数据源。为此，我们将使用支持 Manticore Search 的 MySQL 驱动程序。打开插件 `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)

## 在 PHPStorm 中使用 Manticore Search

### 创建表

创建表时，建议使用控制台 `Ctrl+Shift+F10`

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

如果您决定使用 UI，请从表创建命令中删除 `Manticore.products` 数据库，仅保留 `products`。

### 插入

要通过 PHPStorm 向 Manticore 插入数据，可以使用控制台和 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 自动生成，请将 `id` 值设置为 `0` 而不是默认的 `null`。
![通过 UI 插入](./manticoresearch-phpstorm-support/insert-via-ui.png)

打开表后，可以看到刚刚添加的数据。
![插入的数据示例.png](./manticoresearch-phpstorm-support/inserted-data.png)

### 选择
由于在 MySQL 中 `MATCH()` SQL 语句的格式不同，且 UI 会将其视为错误，因此最好使用控制台进行 SELECT 操作。
```mysql
select * from products where match('pet')
```
![使用匹配运算符选择](./manticoresearch-phpstorm-support/select-match.png)

### 更新
更新操作只能在控制台中执行。
```mysql
update products set price=18.5 where id = 8217058505249521668;

# 1 row affected in 12 ms
```

### 删除
删除操作只能通过控制台执行。
```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 可以通过像 PHPStorm 这样的 MySQL IDE 访问，但它本身并不是 MySQL。这一区别带来了 IDE 与 Manticore Search 交互时的某些限制。
