Manticore Search has a single level of hierarchy for tables.
Unlike other DBMS, there is no concept of grouping tables into databases in Manticore. However, for interoperability with SQL dialects, Manticore accepts SHOW DATABASES
statements for interoperability with SQL dialect, statements, but the statement does not return any results.
General syntax:
SHOW TABLES [ LIKE pattern ]
The SHOW TABLES
statement lists all currently active tables along with their types. The existing table types are local
, distributed
, rt
, percolate
and template
.
- SQL
- PHP
- Python
- javascript
- Java
- C#
SHOW TABLES;
+----------+-------------+
| Index | Type |
+----------+-------------+
| dist | distributed |
| plain | local |
| pq | percolate |
| rt | rt |
| template | template |
+----------+-------------+
5 rows in set (0.00 sec)
Optional LIKE clause is supported for filtering tables by name.
- SQL
- PHP
- Python
- javascript
- Java
- C#
SHOW TABLES LIKE 'pro%';
+----------+-------------+
| Index | Type |
+----------+-------------+
| products | distributed |
+----------+-------------+
1 row in set (0.00 sec)
{DESC | DESCRIBE} table_name [ LIKE pattern ]
The DESCRIBE
statement lists the table columns and their associated types. The columns are document ID, full-text fields, and attributes. The order matches the order in which fields and attributes are expected by INSERT
and REPLACE
statements. Column types include field
, integer
, timestamp
, ordinal
, bool
, float
, bigint
, string
, and mva
. ID column will be typed as bigint
. Example:
mysql> DESC rt;
+---------+---------+
| Field | Type |
+---------+---------+
| id | bigint |
| title | field |
| content | field |
| gid | integer |
+---------+---------+
4 rows in set (0.00 sec)
An optional LIKE clause is supported. Refer to SHOW META for its syntax details.
You can also view the table schema by executing the query select * from <table_name>.@table
. The benefit of this method is that you can use the WHERE
clause for filtering:
- SQL
select * from tbl.@table where type='text';
+------+-------+------+----------------+
| id | field | type | properties |
+------+-------+------+----------------+
| 2 | title | text | indexed stored |
+------+-------+------+----------------+
1 row in set (0.00 sec)
You can also perform many other actions on <your_table_name>.@table
considering it as a regular Manticore table with columns consisting of integer and string attributes.
- SQL
select field from tbl.@table;
select field, properties from tbl.@table where type in ('text', 'uint');
select * from tbl.@table where properties any ('stored');
SHOW CREATE TABLE table_name
Prints the CREATE TABLE
statement used to create the specified table.
- SQL
SHOW CREATE TABLE tbl\G
Table: tbl
Create Table: CREATE TABLE tbl (
f text indexed stored
) charset_table='non_cont,cont' morphology='icu_chinese'
1 row in set (0.00 sec)
If you use the DESC
statement on a percolate table, it will display the outer table schema, which is the schema of stored queries. This schema is static and the same for all local percolate tables:
mysql> DESC pq;
+---------+--------+
| Field | Type |
+---------+--------+
| id | bigint |
| query | string |
| tags | string |
| filters | string |
+---------+--------+
4 rows in set (0.00 sec)
If you want to view the expected document schema, use the following command:
DESC <pq table name> table
:
mysql> DESC pq TABLE;
+-------+--------+
| Field | Type |
+-------+--------+
| id | bigint |
| title | text |
| gid | uint |
+-------+--------+
3 rows in set (0.00 sec)
Also desc pq table like ...
is supported and works as follows:
mysql> desc pq table like '%title%';
+-------+------+----------------+
| Field | Type | Properties |
+-------+------+----------------+
| title | text | indexed stored |
+-------+------+----------------+
1 row in set (0.00 sec)
Deleting a table is performed in 2 steps internally:
- Table is cleared (similar to TRUNCATE)
- All table files are removed from the table folder. All the external table files that were used by the table (such as wordforms, extensions or stopwords) are also deleted. Note that these external files are copied to the table folder when
CREATE TABLE
is used, so the original files specified inCREATE TABLE
will not be deleted.
Deleting a table is possible only when the server is running in the RT mode. It is possible to delete RT tables, PQ tables and distributed tables.
- SQL
- JSON
- PHP
- Python
- javascript
- Java
- C#
DROP TABLE products;
Query OK, 0 rows affected (0.02 sec)
Here is the syntax of the DROP TABLE
statement in SQL:
DROP TABLE [IF EXISTS] table_name
When deleting a table via SQL, adding IF EXISTS
can be used to delete the table only if it exists. If you try to delete a non-existing table with the IF EXISTS
option, nothing happens.
When deleting a table via PHP, you can add an optional silent
parameter which works the same as IF EXISTS
.
- SQL
- JSON
- PHP
- Python
- javascript
- Java
- C#
DROP TABLE IF EXISTS products;
{u'error': u'', u'total': 0, u'warning': u''}
The table can be emptied with a TRUNCATE TABLE
SQL statement or with a truncate()
PHP client function.
Here is the syntax for the SQL statement:
TRUNCATE TABLE table_name [WITH RECONFIGURE]
When this statement is executed, it clears the RT table completely. It disposes the in-memory data, unlinks all the table data files, and releases the associated binary logs.
A table can also be emptied with DELETE FROM index WHERE id>0
, but it's not recommended as it's slower than TRUNCATE
.
- SQL
- JSON
- PHP
- Python
- javascript
- Java
- C#
TRUNCATE TABLE products;
Query OK, 0 rows affected (0.02 sec)
One of the possible uses of this command is before attaching a table.
When RECONFIGURE
option is used new tokenization, morphology, and other text processing settings specified in the config take effect after the table gets cleared. In case the schema declaration in config is different from the table schema the new schema from config got applied after table get cleared.
With this option clearing and reconfiguring a table becomes one atomic operation.
- SQL
- HTTP
- PHP
- Python
- javascript
- Java
- C#
TRUNCATE TABLE products with reconfigure;
Query OK, 0 rows affected (0.02 sec)