Los catálogos no se actualizan automáticamente ni se guardan junto con la base de datos y cada tabla puede tener un único catálogo.
Para la utilización de estos catálogos dentro de una consulta, podemos utilizar dos métodos, el primero consiste en incluir los criterios dentro de una cláusula WHERE (CONTAINS ó FREETEXT) y la segunda es utilizando una tabla temporal que contiene el ratio de acierto en la consulta (CONTAINSTABLE ó FREETEXTTABLE).
Sintaxis:
SELECT <Campos> FROM <Tabla>
WHERE CONTAINS(<Campo>,<Cadena>) OR/AND CONTAINS(<Campo>,<Cadena>)
El predicado CONTAINS soporta sintaxis complejas para buscar:
SELECT title_id, title, notes FROM titles
WHERE CONTAINS(notes,’business’)
Para localizar una frase en un campo:
SELECT title_id, titles, notes FROM titles
WHERE CONTAINS(notes,’ "common business applications" ‘)
Para localizar una frase en todos los campos habilitados:
SELECT title_id, titles, notes FROM titles
WHERE CONTAINS(*, ‘ "common business applications" ‘)
Utilizando AND, OR y NOT
SELECT title, notes FROM titles
SELECT titles, notes FROM titles
SELECT titles, notes FROM titles
SELECT titles, notes FROM titles
WHERE CONTAINS(notes, ‘ "favorite recipes" OR "gourmet recipes" ‘)
WHERE CONTAINS(notes, ‘ cooking AND NOT ("computer*") ‘)
WHERE CONTAINS(notes, ‘ beer AND ales ‘)
WHERE CONTAINS(*, ‘("ice skating" OR hockey) AND NOT olympics’)
Utilizando caracteres comodines
SELECT titles, notes FROM titles
SELECT titles, notes FROM titles
WHERE CONTAINS(notes,’ "ice*" ‘)
WHERE CONTAINS(notes, ‘ "light bread*" ‘)
Búsqueda de palabras o frases indicando la importancia de las palabras:
Esta búsqueda permite indicar el peso que tendrá cada una de las palabras o frases que se buscan sobre el resultado de la búsqueda, el peso oscila entre el valor más bajo 0.0 y el valor más alto 1.0.
SELECT Cliente, Nombre, Direccion FROM Cliente
WHERE CONTAINS (Direccion, ‘ISABOUT ( "Calle*", Velazquez WEIGHT(0.5), Serrano(0.9)’)
(Se encontrarán todos aquellos registros que en el campo dirección exista la cadena calle seguida de cualquier valor, ordenando primero los de "Calle Serrano", luego los de "Calle Velázquez" y después el resto.
Búsqueda de palabras cercanas:
Podemos realizar búsquedas por dos palabras e indicar que se encuentren próximas una de otra. El orden de las palabras no altera el resultado de la búsqueda.
SELECT titulo, notas FROM libros
SELECT titulo, notas FROM libros
WHERE CONTAINS (notas, "usuario NEAR computadora")
WHERE CONTAINS (notas, "usuario ~ computadora")
Se pueden indicar tres palabras, de tal forma que la segunda y la primera deben estar próximas al igual que la segunda y la tercera.
SELECT titulo, notas FROM libros
WHERE CONTAINS (notas, "usuario ~ principiante ~ computadora")
Búsquedas con frases:
... WHERE CONTAINS(Descripcion, " salsas ~ "mezcl*" ")
... WHERE CONTAINS(Descripcion, " "carne*" ~ "salsa empanada*" ")
... FREETEXT(descripcion, ‘ "En un lugar de la mancha de cuyo nombre no quiero acordarme" ‘)
SELECT Preguntas.Pregunta, Preguntas.Respuesta, Resultado.RANK
SELECT Preguntas.Pregunta, Preguntas.Respuesta, Resultado.RANK
FROM Preguntas, CONTAINSTABLE(Respuesta, " SQL Server") AS Resultado
WHERE Preguntas.IdPregunta = Resultado.[KEY]
ORDER BY Resultado.RANK Desc
FROM Preguntas INNER JOIN CONTAINSTABLE (Respuesta, "SQL Server") AS Resultado
ON Preguntas.IdPregunta = Resultados.KEY