2012-06-08 18 views
5

Tengo una tabla con una lista de palabras.indexación parcial de mysql, indexación inversa

palabra VARCHAR (16)

necesito para crear un índice inverso. es decir. la palabra "manzana" se indexaría como "elppa", la palabra "plátano" como "ananab" y así sucesivamente.

Además, ¿es posible indexar, por ejemplo, una parte de la palabra? Tales como, omita el primer/último 1 o 2 caracteres:

pple (manzana) Anana (banana)

Es esto posible?

+0

Agregue una nueva columna con el texto inverso y compile allí el índice. – Scoutman

Respuesta

5

Puede crear un índice en un campo que está limitado por la longitud del prefijo, lo que significa que solo se tendrán en cuenta los primeros n caracteres, aunque no puede hacerlo con una posición inicial y final arbitraria. Obtenga más información al respecto en la página de documentación dede mysql.

En este caso, me gustaría hacer otra columna, use la funciónde mysql para rellenarla y crear un índice sobre ella, de esa manera se obtiene un campo para buscar en el reverso de la palabra original.

Otras bases de datos como Postgresql le permiten index an expression, lo que efectivamente le permite indexar reverse(col_name) sin crear la columna adicional. Entonces es posible, solo que no con mysql en este momento. (desde la versión 9, el potgresql tiene reverse() nativo, creo)