MySQL: Full Text Search para palabras pequeñas



Si, ya se, ahora está de moda usar MongoDB y abandonar SQL a las patadas porque la moda así lo indica, pero a los hechos, el lenguaje SQL es genial y sirve para mucho, así que hago un minipost para programadores que hacen búsquedas Full Text Search (hice esa nota hace 10 años!!) en sus MySQL.

Como sabrán es pesadito hacer este tipo de consultas pero a veces tenemos una cantidad de datos que es manejable, por ejemplo un sitio web, ahora bien, MySQL viene configurado para no buscar palabras menores a 4 caracteres pero he aquí que MUCHAS siglas utilizan sólo tres.

AMD, ARM, OSX, iOS, ADN, RPG, JPG, mierda, no pararía de terminar de enumerarlas, las palabras o siglas de tres caracteres estan por todos lados así que para permitirlo hay que habilitar la cantidad:

en /etc/mysql/my.cnf (o donde tengan el archivo de configuración)

[mysqld]
ft_min_word_len=3

[myisamchk]
ft_min_word_len=3



Y reiniciar el server. Ahora bien, hay que reconstruir los índices y para una tabla con 100.000 registros con texto que pesa 400Mb no es nada raro que se vaya al doble, lo digo por experiencia personal. El índice será enorme porque ahora contendrá muchas, muchas palabras más que si se quedaba en el límite de 4 carateres.

Para reiniciar los índices:

REPAIR TABLE tbl_name QUICK;

A todo esto, me sirvió para incorporar la búsqueda en el Lector de RSS de LinksDV. Si, ahora tienen un lector de feeds con buscador y todo Guiño

Otros posts que podrían llegar a gustarte...

Comentarios

  • Tuve la oportunidad de escuchar en vivo a Michael Widenius hablando sobre MySQL y MariaDB. Un genio el tipo y digno de darle un apretón de manos al ritmo de "Sos un groso"

    http://imgur.com/XBWSYG9

    • Responder
    • Citar
    • Comentado:
  • leandro    

    sos groso! no sabia que estaba preestablecido un limite a 4 caracteres Guiño

    • Responder
    • Citar
    • Comentado:
  • juanfgs    

    fabio dijo:

    Si, ya se, ahora está de moda usar MongoDB y abandonar SQL a las patadas porque la moda así lo indica, pero a los hechos, el lenguaje SQL es genial


    Terrible trolling :D. Pero vamos.

    Si usas MongoDB/Redis/HData/Cassandra (NoSQL vamos) es porque algo tiene que justificarlo a nivel diseño de aplicación, no un simple full text search (que no tiene un carajo que ver con elegir un motor de BDD sobre otro).

    En lo personal para una aplicación estoy usando mongo y la verdad en algunas cosas te permite no irte tanto a la mierda del diseño de sistemas original por conformar la estructura que terminas usando en SQL ( puntualmente el horror que es utilizar el patrón/antipatrón EAV).

    Igualmente uso MariaDB así que muy bueno el post

    • Responder
    • Citar
    • Comentado:
  • juanfgs dijo:

    fabio dijo:
    Si, ya se, ahora está de moda usar MongoDB y abandonar SQL a las patadas porque la moda así lo indica, pero a los hechos, el lenguaje SQL es genial


    Terrible trolling :D. Pero vamos.

    Si usas MongoDB/Redis/HData/Cassandra (NoSQL vamos) es porque algo tiene que justificarlo a nivel diseño de aplicación, no un simple full text search (que no tiene un carajo que ver con elegir un motor de BDD sobre otro).

    En lo personal para una aplicación estoy usando mongo y la verdad en algunas cosas te permite no irte tanto a la mierda del diseño de sistemas original por conformar la estructura que terminas usando en SQL ( puntualmente el horror que es utilizar el patrón/antipatrón EAV).

    Igualmente uso MariaDB así que muy bueno el post


    tal cual, pero viste que las modas son del tipo "¿Cómo que no usás Cassandra para el site de plantas de tu vieja?" y cosas así que son más por la moda que por el caso de uso o escenario en particular.

    He tenido muchas discusiones por elección de tecnología por capricho y no por el escenario a enfrentar, si, los de sistemas somos terribles también Guiño

    • Responder
    • Citar
    • Comentado:
  • Nacho    

    Fabio estaria bueno (si es q no lo hiciste ya) un post aunque sea minimo sobre algoritmos de busqueda (q no sea demasiado tecnico). No entiendo mucho de esa parte pero veo seguido que hay sitios como por ej Argenteam que tiene un buscador pesimo (muy especifico) y otros que ya se van al krajo y te traen todos los resultados juntos...

    • Responder
    • Citar
    • Comentado:
  • Nacho dijo:

    Fabio estaria bueno (si es q no lo hiciste ya) un post aunque sea minimo sobre algoritmos de busqueda (q no sea demasiado tecnico). No entiendo mucho de esa parte pero veo seguido que hay sitios como por ej Argenteam que tiene un buscador pesimo (muy especifico) y otros que ya se van al krajo y te traen todos los resultados juntos...


    es complicado porque hay que probar cada uno de los disponibles y no todos son fáciles de instalar :P yo ya probé un par de métodos y este, Full Text Search, es horrible para buscar algo así como títulos de subtítulos. Te trae demasiados falsos positivos, aun así no lo probé específicamente con eso.

    otros más complejos te permiten organizar mejor las keywords, es todo un tema para investigar...

    • Responder
    • Citar
    • Comentado:

Deje su comentario:

Tranquilo, su email nunca será revelado.
La gente de bien tiene URL, no se olvide del http/https
Para evitar bots, si se tardó mucho en leer la nota seguramente no sirva y tenga que intentar dos veces

Negrita Cursiva Imagen Enlace


comentarios ofensivos o que no hagan al enriquecimiento del post serán borrados/editados por el administrador