Vous êtes sur la page 1sur 12

Bsqueda de texto completo -- Grupo 04

Tutorial Bsqueda de texto completo en SQL Server

Esp. 364918 - ADMINISTRACIN DE BASES DE DATOS

JAIRO ARAMNDIZ PINZN JAIR OSPINO ARDILA OSNEIDER PALLARES PREZ

Valledupar 2012

Bsqueda de texto completo -- Grupo 04

Full Text Search


Full Text Search es una funcionalidad de bsqueda que habilita la manera ms rpida y sencilla para la bsqueda de texto dentro de SQL server (Crea un diccionario de palabras). Aunque el concepto de full text search no es nuevo en SQL Server 2008, hay mejoras considerables de gestin y rendimiento en SQL Server 2008. Tanto en SQL Server 2000 como en 2005 uno de los inconvenientes que tenemos cuando utilizamos full-text search es que ste sistema no se encuentra integrado con el optimizador de consultas. Dicho de otra forma, una consulta que incluya parte relacional pura y parte full-text debe descomponerse en dos consultas independientes y luego operar con los resultados. Esto provoca ineficiencias que en algunos casos se solucionaban de forma artificial (por ejemplo incluyendo columnas relacionado en el texto a indexar). En SQL Server 2008 el motor se encuentra integrado y los ndices full-text pasan a ser ndices especializados (como los de los tipos de datos geogrficos) pero que siguen estando dentro del motor relaciona. Adems se ha optimizado el motor para mquinas con ms procesadores y mayores cantidades de memoria intentando as obtener mejores rendimientos en las omnipresentes plataformas de 64 bits. Cmo habilitarlo? 1. Primero debemos ver si el servicio del Full Text Search est corriendo. Lo podemos ver en el SQL Server Configuration Manager

Como podemos observar en nuestro caso est detenido, lo que debemos hacer es iniciarlo, para eso lo que hacemos es dar clic sobre el e iniciarlo dando clic en el botn run o iniciar.

Bsqueda de texto completo -- Grupo 04

En el caso de que este deshabilitada la opcin de iniciar, como en nuestro caso lo que se debe hacer es ir directamente a los servicios del sistema e iniciarlo.

Bsqueda de texto completo -- Grupo 04 Lo que debemos hacer es colocar el tipo de inicio como manual e iniciarlo nosotros mismos.

Bsqueda de texto completo -- Grupo 04

Ahora ya esta iniciado nuestro servicio de full-text

2. Luego verificamos si la base donde estamos trabajando es versin SQL Server 2008. Para ello ejecutamos el siguiente comando como lo indica la siguiente figura.

Bsqueda de texto completo -- Grupo 04

3.

Luego en la Tabla que deseamos indexar hacemos click derecho, Full-Text Index, Define Full-Text Index.

Bsqueda de texto completo -- Grupo 04

4.

Seleccionamos la llave de la tabla, y luego las columnas que vamos a indexar. Nos pedir que creemos un Catalogo y dejamos en automtico la alimentacin del catalogo.
Al seleccionar Define full-text se nos abre la siguiente ventana en la cual daremos siguiente.

Bsqueda de texto completo -- Grupo 04 Luego seleccionamos las columnas en las que deseamos aplicarle la consulta de texto completo y damos siguiente.

Y como hemos dicho, dejamos la alimentacin de manera automtica.

Bsqueda de texto completo -- Grupo 04 Lo que sigue ahora es crear el catalogo donde referenciar los diferentes ndices que se creen. En caso de tener ya creado ms catlogos si lo deseamos solamente escogemos uno de ellos, en nuestro caso no hay, lo crearemos.

Esta configuracin es opcional, lo que requiere es que, como y cuando deseamos que se utilice los ndices.

Bsqueda de texto completo -- Grupo 04 Una vez ya realizado la configuracin podemos ver lo que hasta ahora hemos indicado.

Al dar finalizar y si todo sale bien hemos creado correctamente nuestro catlogo y nuestro ndice.

Bsqueda de texto completo -- Grupo 04

CONTAINS Se utiliza para buscar, coincidencias exactas o aproximadas con palabras o frases, palabras prximas a otra dada en una cierta distancia, o coincidencias ponderadas. CONTAINS puede buscar: Una palabra o una frase. El prefijo de una palabra o una frase. Una palabra cerca de otra palabra. Una palabra que sea derivada de otra (por ejemplo, las palabras controles, controladores, controlando y controlado son derivadas de control). Una palabra que sea un sinnimo de otra palabra usando el diccionario de sinnimos (por ejemplo, la palabra metal puede tener sinnimos como aluminio y acero). INFLECTIONAL Especifica que se va a utilizar el analizador lingstico dependiente del idioma en el trmino simple especificado. El comportamiento del analizador lingstico se define en funcin de las reglas de anlisis lingstico de cada idioma concreto. El idioma neutro no tiene ningn analizador lingstico asociado. El idioma de las columnas que se van a consultar se utiliza para hacer referencia al analizador lingstico deseado. Si se especifica idioma, se utiliza el analizador lingstico correspondiente a dicho idioma. THESAURUS Especifica que se utiliza el diccionario de sinnimos correspondiente al idioma de texto de la columna o el idioma especificado en la consulta. El patrn o patrones ms largos de termino_simple se hacen coincidir con el diccionario de sinnimos y se generan trminos adicionales para expandir o reemplazar el patrn original. NEAR Indica que la palabra o frase situada a la izquierda del operador NEAR o ~ tiene que estar bastante cerca de la palabra o frase situada a la derecha del operador NEAR o ~. Se pueden encadenar varios trminos de proximidad. Prximo especifica una coincidencia de palabras o frases que deben estar prximas entre s. Funciona de forma similar al operador AND: ambos requieren que existan varias palabras o frases en la columna examinada.

Bsqueda de texto completo -- Grupo 04

Ejemplos: SELECT * FROM Quijote WHERE CONTAINS(contenido, 'caballero') SELECT * FROM Quijote WHERE CONTAINS(contenido,'caballero rocinante') NEAR

SELECT * FROM Quijote WHERE CONTAINS(contenido,'caballero NEAR disco') SELECT * FROM Quijote WHERE CONTAINS(contenido, 'FORMSOF (INFLECTIONAL , doctor)') SELECT * FROM Quijote WHERE CONTAINS(contenido, 'FORMSOF (THESAURUS , golpe )') SELECT * FROM Quijote WHERE CONTAINS (contenido,'"un "rocinante"'); lugar" AND

SELECT * FROM Quijote WHERE CONTAINS (contenido,'"un lugar" "computadora"'); SELECT * FROM Quijote WHERE CONTAINS (contenido,'"un lugar" "computadora"'); SELECT * FROM CONTAINSTABLE( TABLA, CAMPO, 'PALABRA')

AND OR

FREETEXT Es un predicado que se utiliza para buscar en columnas que contengan tipos de datos basados en caracteres valores que coincidan con el significado y no literalmente con las palabras de la condicin de bsqueda. Cuando se utiliza FREETEXT, el motor de consulta de texto realiza internamente las siguientes acciones en freetext_string, asigna a cada uno de los trminos un peso y busca las coincidencias. Las consultas de bsqueda de texto que utilizan FREETEXT son menos precisas que las consultas de texto que utilizan CONTAINS. El motor de bsqueda de texto de SQL Server identifica las palabras y las frases importantes. No se le da significado especial a ninguna de las palabras clave reservadas o caracteres comodn que suelen tener significado cuando se especifican en el parmetro del predicado CONTAINS. SELECT *FROM Quijote q WHERE FREETEXT(Contenido, 'encontro dulcinea') SELECT * FROM FREETEXTTABLE(TABLA, CAMPO, 'PALABRA') a su