martes, 16 de febrero de 2010

Full-Text Search II: Implementar FTS

Vamos con la continuacion del articulo anterior, esta vez viendo como implementar FTS.

Para ello abre el Management Studio y conéctate a la instancia en la que queremos configurar el catalogo.


Abre el editor de consultas y ejecuta:

CREATE FULL TEXT CATALOG EjemploCatalogoFTS

Si FTS no estuviera habilitado para la base de datos recibirás este error:

Msg 7616, Level 16, State 100, Line 1
Full-Text Search is not enabled for the current database. Use sp_fulltext_database to enable full-text search for the database. The functionality to disable and enable full-text search for a database is deprecated. Please change your application.



Para ver si esta activado o no FTS, puedes abrir las propiedades de la base de datos donde queremos habilitarlo. Luego vamos al apartado "files" ahí encontramos una casilla de verificación que habilita FTS "Use full-text indexing".


Si FTS está habilitado el mensaje recibido por el motor será:

Command(s) completed successfully



Si se ha creado satisfactoriamente el catalogo podremos encontrar un archivo con el nombre del catalogo en la ruta por defecto de SQL (c:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\) que se usa para almacenar el catalogo y los índices de los datos.

Después de haber habilitado FTS y de haber creado nuestro primer catalogo, podemos ver el nuevo catalogo usando el explorador de objetos del Management Studio, lo encontramos en "Instancia->Base de Datos->Storage->Full Text Catalogs->Nombre de catalogo". Si no aparece acuérdate de refrescar el Explorador de objetos, si aun así no apareciera puede ser que haya habido algún problema en la creación si es así empezad comprobando los permisos NTFS.

También podemos usar el Management Studio para crear los catálogos pinchando sobre "Full Text Catalogs" con el botón derecho del ratón y clickando sobre "New Full-Text Catalog..."


Se nos abrirá la siguiente ventana en donde podemos rellenar el nombre, la ubicación y otras opciones validas (recordad que si queréis podéis pasar estas opciones una vez completadas al editor de consultas pinchando en la parte de arriba de la ventana donde pone "Script").


Después de crear el catalogo ya lo tenemos todo listo para crear nuestros índices FTS. Antes de crearlos en una tabla tenemos que estar seguros que exista un índice único en la tabla (en otra columna) el cual se usara para mapear los resultados a los registros de la tabla. Para crear nuestro índice FTS usaremos esta sentencia:

CREATE FULLTEXT INDEX ON Complaints(ComplaintDetails)

KEY INDEX PK_Complaints ON EjemploCatalogoFTS

WITH CHANGE_TRACKING AUTO



Fijaros que debemos de proporcionarle la tabla y columna donde queremos crearlo, además de el nombre y el catalogo donde se almacenara. También tenemos que decir si queremos que los cambios en el texto indexado queremos que se propaguen al índice de manera automática, manual o que no se propaguen (AUTO MANUAL OFF). Si pusiéramos manual para propagar esos cambios tendremos que ejecutar la siguiente sentencia, la cual podremos programar para que se haga periódicamente con el asistente para tareas automatizadas:

ALTER FULLTEXT INDEX PK_Complaints START UPDATE POPULATION


Una vez creado el índice vamos a ver como usamos FTS para tener una manera rápida y eficaz de resolver consultas en una columna donde contenemos texto.

Recordemos una de las consultas usadas con el método tradicional:

SELECT * FROM Notes Table WHERE Notes Like ‘%Full-Text Search%'



Esta consulta usando FTS seria así:

SELECT * FROM NotesTable WHERE CONTAINS(Notes, N'Full-Text Search')



Para acabar de completar la manera de usar FTS os aconsejo que os paséis por este enlace de TechNet donde veréis como usar las condiciones de búsqueda SQL en Transact-SQL

Bueno ya sabemos cómo mejorar considerablemente las consultas que incluyen columnas de texto largo. Hemos visto como implementarlo y ponerlo en funcionamiento, espero este articulo os sea de ayuda.

Un Saludo y Hasta Pronto.

19 comentarios:

  1. BUEN APORTE, ME SIRVIO MUCHO EN LA ESCUELA.
    ES EXACTAMENTE MI TAREA. GRACIAS

    ResponderEliminar
  2. I wonder why the other experts of this sector do not realize this.

    ResponderEliminar
  3. You should continue your writing. I am sure, you have a huge readers’ base already!

    ResponderEliminar
  4. Very interesting discussion glad that I came across such informative post.

    ResponderEliminar
  5. This article is very helpful and interesting too. Keep doing this in future.

    ResponderEliminar
  6. This website is useful. You made great points Many thanks for sharing.

    ResponderEliminar
  7. I’m impressed with this article, I must say this is one of the best blog!!

    ResponderEliminar
  8. It is not everyday that I have the possibility to see something like this.

    ResponderEliminar
  9. When your website or blog goes live for the first time, it is exciting.

    ResponderEliminar
  10. It is very well written, and your points are well-expressed.

    ResponderEliminar
  11. Keep up the great work, its hard to find good ones.

    ResponderEliminar
  12. Top best earnings tools and many more must check

    ResponderEliminar
  13. Im taking your sustenance in addition, Thanks

    ResponderEliminar
  14. thanks for sharing this type of useful articles to read.

    ResponderEliminar
  15. Easily, the article is actually the best topic on this registry related issue.

    ResponderEliminar
  16. This is such a great resource that you are providing and you give it away for free.

    ResponderEliminar
  17. Im glad to have found this post as its such an interesting one!

    ResponderEliminar
  18. And he actually bought me lunch as I found it for him smile Therefore let me rephrase that:

    ResponderEliminar

Te resulta interesante esta informacion? Tienes alguna duda? Adelante hazmelo saber