Bienvenido, me llamo Luis y en esta ocasión les traigo otro nuevo post.
En este artículo, veremos en detalle cómo funciona el modo de búsqueda en tiempo real de Manticore y cómo puede usarlo por su cuenta. Aprenderemos a manipular índices en Manticore Search usando sentencias SQL.
Índice
Creación de índice
Primero conectemos a Manticore a través de SQL:
root@rtmode-79f9d6d867-fptcc:/# mysql -P9306 -h0 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 3.5.2 0686d9f0@200326 release Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Una declaración de creación de tabla simple se ve así:
MySQL [(none)]> CREATE TABLE testrt1 (title TEXT, category INT);
Esto creará un índice con la identificación del documento (que no necesita declararse), un campo de texto y un atributo de número entero.
Los índices admiten una variedad de opciones que se pueden pasar en la declaración:
Por ejemplo:
MySQL [(none)]> CREATE TABLE testrt2 (title TEXT, category INT) html_strip='1' docstore_compression_level = '12';
En este índice, el texto se eliminará de HTML y el nivel de compresión para el almacenamiento de documentos se establecerá en el nivel más alto.
Si no se especifica el tipo, por defecto el índice será en tiempo real. Si queremos crear un índice distribuido, necesitamos pasar el tipo:
MySQL [(none)]> CREATE TABLE testrtdist type='distributed' local='testrt1' local='testrt2';
Si no estamos seguros de si la tabla ya está hecha o no, se puede utilizar la cláusula 'SI NO EXISTE'
para evitar un error
:
MySQL [(none)]> CREATE TABLE IF NOT EXISTS testrt1 (title TEXT, category INT);
También es posible crear un índice utilizando la configuración y el esquema de un índice que ya existe:
MySQL [(none)]> CREATE TABLE testrt3 LIKE testrt2;
Más operaciones de mesa
Para eliminar un índice use DROP TABLE
:
MySQL [(none)]> DROP TABLE testrt3;
Para vaciar un índice:
MySQL [(none)]> TRUNCATE TABLE testrt2;
Para agregar o quitar una columna:
MySQL [(none)]> ALTER TABLE testrt2 ADD COLUMN tagId INT; MySQL [(none)]> ALTER TABLE testrt2 DROP COLUMN tagId;
Tenga en cuenta que los campos de TEXTO
no se pueden agregar ni quitar actualmente. Deberá volver a crear la tabla si necesita modificar los campos de TEXTO
.
También es posible cambiar la configuración del índice:
MySQL [(none)]> ALTER TABLE testrt2 ignore_chars='.';
Tenga en cuenta que la configuración de tokenización no se aplicará a los datos existentes en el componente de texto completo, solo se verán afectados los documentos nuevos agregados después de ALTER
.
Si necesita actualizar toda la colección, el índice debe volver a crearse con la configuración deseada.
Información de la tabla
Hay varias declaraciones que proporcionan información sobre un índice.
Para obtener el esquema de índice:
MySQL [(none)]> DESCRIBE testrt2; +----------+--------+----------------+ | Field | Type | Properties | +----------+--------+----------------+ | id | bigint | | | title | field | indexed stored | | category | uint | | +----------+--------+----------------+
La información sobre la cantidad de documentos, el tamaño y las métricas de rendimiento se puede ver con SHOW INDEX STATUS
:
mysql> SHOW INDEX testrt2 STATUS;
MOSTRAR CONFIGURACIONES DE ÍNDICE
también puede proporcionar una lista de configuraciones de índice:
MySQL [(none)]> SHOW INDEX testrt2 SETTINGS;
Si necesita exportar la declaración de índice completa, use SHOW CREATE TABLE
:
MySQL [(none)]> SHOW CREATE TABLE testrt2;
Importando un índice
Los índices RT
se pueden importar utilizando la instrucción IMPORT TABLE
.
Los archivos de índice se copiarán a su data_dir
especificando al configurar.
Ejemplo:
MySQL [(none)]> IMPORT TABLE movies FROM '/index/movies_rt'; MySQL [(none)]> SELECT * FROM moviesG *************************** 1. row *************************** id: 1 num_critic_for_reviews: 4 duration: 96 director_facebook_likes: 0 actor_3_facebook_likes: 460 actor_1_facebook_likes: 708 gross: 0 num_voted_users: 961 cast_total_facebook_likes: 2307 facenumber_in_poster: 0 num_user_for_reviews: 12 budget: 3500000 title_year: 2009 actor_2_facebook_likes: 574 movie_facebook_likes: 211 imdb_score: 4.800000 aspect_ration: 2.350000 color: Color movie_imdb_link: http://www.imdb.com/title/tt1002561/?ref_=fn_tt_tt_1 language: English country: USA content_rating: director_name: Charles Adelman actor_2_name: Kevin Pollak actor_1_name: Teri Polo movie_title: 02:13 actor_3_name: Jere Burns plot_keywords: death|forensic|murder|profiler|serial killer ... *************************** 20. row *************************** id: 20 num_critic_for_reviews: 1 duration: 111 director_facebook_likes: 0 actor_3_facebook_likes: 247 actor_1_facebook_likes: 1000 gross: 14616 num_voted_users: 314 cast_total_facebook_likes: 2059 facenumber_in_poster: 1 num_user_for_reviews: 10 budget: 12000000 title_year: 2015 actor_2_facebook_likes: 445 movie_facebook_likes: 26000 imdb_score: 7.500000 aspect_ration: 1.850000 color: Color movie_imdb_link: http://www.imdb.com/title/tt3453052/?ref_=fn_tt_tt_1 language: English country: USA content_rating: R director_name: Timothy Hines actor_2_name: Kelly LeBrock actor_1_name: Christopher Lambert movie_title: 10 Days in a Madhouse actor_3_name: Alexandra Callas plot_keywords:
El modo RT, que es un nuevo modo predeterminado, facilitará el mantenimiento de índices en Manticore Search en la mayoría de los casos.
Por lo demás, el modo simple sigue siendo compatible. Puede conocer las diferencias en Documentación de Manticore Search.
Gracias por leer este post.
Añadir comentario