Manticore Search has a single level of hierarchy of indexes.
There is no concept of grouping tables in databases like in other DBMS. Still, Manticore accepts SHOW DATABASES
statements for interoperability with SQL dialect, but the statement doesn't return anything.
While the data collections in Manticore are called indexes, the statement that displays them is SHOW TABLES
for compatibility with miscellaneous SQL clients.
General syntax:
SHOW TABLES [ LIKE pattern ]
SHOW TABLES
statement enumerates all currently active indexes along with their types. Existing index types are local
, distributed
, rt
and template
.
- SQL
- PHP
- Python
- javascript
- Java
SHOW TABLES;
+----------+-------------+
| Index | Type |
+----------+-------------+
| dist1 | distributed |
| rt | rt |
| products | rt |
+----------+-------------+
4 rows in set (0.00 sec)
Optional LIKE clause is supported for filtering indexes by name.
- SQL
- PHP
- Python
- javascript
- Java
SHOW TABLES LIKE 'pro%';
+----------+-------------+
| Index | Type |
+----------+-------------+
| products | distributed |
+----------+-------------+
1 row in set (0.00 sec)
{DESC | DESCRIBE} index [ LIKE pattern ]
DESCRIBE
statement lists index columns and their associated types. Columns are document ID, full-text fields, and attributes. The order matches that in which fields and attributes are expected by INSERT
and REPLACE
statements. Column types are 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.
SHOW CREATE TABLE name
Prints the CREATE TABLE
statement that creates the named table.
- SQL
SHOW CREATE TABLE idx\G
Table: idx
Create Table: CREATE TABLE idx (
f text indexed stored
) charset_table='non_cjk,cjk' morphology='icu_chinese'
1 row in set (0.00 sec)
If you apply DESC
statement to a percolate index it will show the outer index schema, i.e. the schema of stored queries. It's static and the same for all local pq indexes:
mysql> DESC pq;
+---------+--------+
| Field | Type |
+---------+--------+
| id | bigint |
| query | string |
| tags | string |
| filters | string |
+---------+--------+
4 rows in set (0.00 sec)
If you're looking for an expected document schema use
DESC <pq index 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 an index is performed in 2 steps:
- Index is cleared (similar to TRUNCATE)
- All index files are removed from the index folder. All the external index files that were used by the index (such as wordforms, extensions or stopwords) are also deleted. Note that these external files are copied to index folder when
CREATE TABLE
is used, so the original files specified inCREATE TABLE
will not be deleted.
Deleting an index is possible only when the server is running in RT mode. It is possible to delete RT indexes, PQ indexes and distributed indexes.
- SQL
- HTTP
- PHP
- Python
- javascript
- Java
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] index_name
When deleting an index via SQL, adding IF EXISTS
can be used to delete the index only if it exists. If you try to delete a non-existing index with the IF EXISTS
option, nothing happens.
When deleting an index via PHP, you can add an optional silent
parameter which works the same as IF EXISTS
.
- SQL
- HTTP
- PHP
- Python
- javascript
- Java
DROP TABLE IF EXISTS products;
{u'error': u'', u'total': 0, u'warning': u''}
The index 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 index_name [WITH RECONFIGURE]
When this statement is executed, it clears the RT index completely. It disposes the in-memory data, unlinks all the index data files, and releases the associated binary logs.
An index can also be emptied with DELETE FROM index WHERE id>0
, but it's not recommended as it's much slower than TRUNCATE
.
- SQL
- HTTP
- PHP
- Python
- javascript
- Java
TRUNCATE TABLE products;
Query OK, 0 rows affected (0.02 sec)
One of the possible uses of this command is before attaching an index.
When RECONFIGURE
option is used new tokenization, morphology, and other text processing settings specified in the config take effect after the index gets cleared. In case the schema declaration in config is different from the index schema the new schema from config got applied after index get cleared.
With this option clearing and reconfiguring an index becomes one atomic operation.
- SQL
- HTTP
- PHP
- Python
- javascript
- Java
TRUNCATE TABLE products with reconfigure;
Query OK, 0 rows affected (0.02 sec)