Criar Web, manuais e recursos para desenvolvimento web
Manuais
Programas
FAQS
Diretório
Comunidade
  Inicio > Manuais > Tutorial de SQL
SEÇÕES
Manuais relacionados
+Tutorial de SQL
Categorias
+Linguagem SQL

Índice do Manual Tutorial de SQL
+ O que é SQL
+ Tipos de campos
+ Adicionar um novo registro
+ Apagar um registro
+ Atualizar um registro
+ Seleção de tabelas I
+ Seleção de tabelas II
+ Seleção de tabelas III
+ Seleção de tabelas IV
+ Aproveite seu banco de dados
+ Tabelas temporárias no Sql Server
+ Adquirindo informações do Usuário com a classe System
+ Alguns truques práticos
+ Criação de tabelas
+ SQL e Programação de Banco de Dados
+ Funções para buscas com datas em Access
+ Função em SQL para o cálculo de dias de trabalho
+ SQL com Oracle
+ SQL com Oracle. Operadores
+ Sub-consultas SQL
+ Funções SQL
+ Agrupamento e combinação de elementos com SQL
+ Manipulação de dados com SQL
+ Chaves primárias com SQL com Oracle
+ Definição de chaves para tabelas e restrições
+ Supressão e modificação de tabelas com SQL
+ Gerenciamento de vistas em SQL
+ Usuários em Oracle
+ Gerenciamento em Oracle com SQL
+ Otimizar consultas SQL
+ Consultas de seleção
+ Critérios de seleção em SQL
+ Como exibir informações com múltiplas instruções SQL
+ Critérios de seleção em SQL II
+ Consultas de ação
+ Tipos de dados SQL
+ Subconsultas em SQL
+ Consultas SQL de União Internas
+ Estruturas das tabelas em SQL
+ Cursores em SQL
+ Referências Cruzadas em SQL
+ Introdução a freetext e contains em SQL-Server
+ Acesso ao banco de dados externos
+ Consultas com parâmetros e omissão de permissões
+ Procedures e busca de registros duplicados em SQL
+ A função datepart() em Access
+ Emular um Cursor SQL com um Loop
+ Tipos de instruções SQL e seus componentes sintáticos

Descrição dos capítulos

Parceiros
- CSS para Web Design
- S.O.S Designers
- Slackware-Brasil
- Crie seu Web site
- Oficina da Net


Introdução a freetext e contains em SQL-Server

O que são e como é a sintaxe, para construir catálogos de dados em SQL-Server.


FULL TEXT SEARCH

Utiliza-se em campos de texto de grande tamanho utilizando uns índices denominados catálogos. Estes catálogos só se podem utilizar com tabelas que contenham que definidas chaves primárias e armazenam todas as palavras do conteúdo das tabelas com execeção dos artigos, preposições, etc.

Os catálogos não se atualizam automaticamente nem se salvam junto com o banco de dados e cada tabela pode ter um único catálogo.

Para a utilização destes catálogos dentro de uma consulta, podemos utilizar dois métodos, o primeiro consiste em incluir os critérios dentro de uma cláusula WHERE (CONTAINS ou FREETEXT) e o segundo é utilizando uma tabela temporária que contém o ratio de acerto na consulta (CONTAINSTABLE ou FREETEXTTABLE).

O predicado CONTAINS

Utiliza-se este predicado para buscar um texto específico em uma tabela. Seu funcionamento é similar ao predicado LIKE, a diferença é que este não pode realizar buscas nos campos grandes de texto. CONTAINS não diferencia entre maiúsculas e minúsculas.

Sintaxe:

SELECT <Campos> FROM <Tabela>
WHERE CONTAINS(<Campo>,<Cadeia>) OR/AND CONTAINS(<Campo>,<Cadeia>)


O predicado CONTAINS suporta sintaxe complexas para buscar:

  • Uma ou mais palavras utilizando os operadores lógicos AND/OR.
  • Famílias de palavras
  • Uma palavra ou uma frase que comecem por um determinado texto.
  • Palavras ou frases que estejam umas próximas de outras.

Para buscar uma palavra em um campo:

SELECT title_id, title, notes FROM titles
WHERE CONTAINS(notes,'business')


Para localizar uma frase em um campo:

SELECT title_id, titles, notes FROM titles
WHERE CONTAINS(notes,' "common business applications" ')


Para localizar uma frase em todos os campos habilitados:

SELECT title_id, titles, notes FROM titles
WHERE CONTAINS(*, ' "common business applications" ')


Utilizando AND, OR e NOT

SELECT title, notes FROM titles
WHERE CONTAINS(notes, ' "favorite recipes" OR "gourmet recipes" ')

SELECT titles, notes FROM titles
WHERE CONTAINS(notes, ' cooking AND NOT ("computer*") ')

SELECT titles, notes FROM titles
WHERE CONTAINS(notes, ' beer AND ales ')

SELECT titles, notes FROM titles
WHERE CONTAINS(*, '("ice skating" OR hockey) AND NOT olympics')

Utilizando caracteres curingas

SELECT titles, notes FROM titles
WHERE CONTAINS(notes,' "ice*" ')

SELECT titles, notes FROM titles
WHERE CONTAINS(notes, ' "light bread*" ')

Busca de palavras ou frases indicando a importância das palavras:

Esta busca permite indicar o peso que terá cada uma das palavras ou frases que se buscam sobre o resultado da busca, o peso oscila entre o valor mais baixo 0.0 e o valor mais alto 1.0.

SELECT Cliente, Nome, Endereco FROM Cliente
WHERE CONTAINS (Endereco, 'ISABOUT ( "Rua*", Velazquez WEIGHT(0.5), Serrano(0.9)')

(Serão encontrados todos aqueles registros que no campo endereço exista a cadeia rua seguida de qualquer valor, ordenando primeiro os de "Rua Serrano", logo os de "Rua Velázquez" e depois o resto.

Busca de palavras próximas:

Podemos realizar buscas por duas palavras e indicar que se encontrem próximas uma da outra. A ordem das palavras não altera o resultado da busca.

SELECT titulo, notas FROM livros
WHERE CONTAINS (notas, "usuario NEAR computador")

SELECT titulo, notas FROM livros
WHERE CONTAINS (notas, "usuario ~ computador")


Podem-se indicar três palavras, de tal forma que a segunda e a primeira devem estar próximas ao igual que a segunda e a terceira.

SELECT titulo, notas FROM livros
WHERE CONTAINS (notas, "usuario ~ principiante ~ computador")


Buscas com frases:

... WHERE CONTAINS(Descricao, " salsas ~ "mezcl*" ")

... WHERE CONTAINS(Descricao, " "carne*" ~ "salsa empanada*" ")


O predicado FREETEXT

Ao utilizar este predicado se analisam todas as palavras das frases e nos devolve como resultado, aqueles registros que contém a frase completa ou algum fragmento da mesma. A sintaxe é igual que o predicado CONTAINS.

... FREETEXT(descricao, ' "Em um lugar da mancha de cujo nome não quero me lembrar" ')

O predicado CONTAINSTABLE

Este predicado tem igual funcionamento e sintaxe que CONTAINS a diferença que neste caso devolve uma tabela com duas colunas, a primeira chamada [KEY] contem o valor da chave primária da tabela que a que buscamos, a segunda chamada RANK devolve um valor indicando a porcentagem de acerto na busca para cada registro.

SELECT Perguntas.Pergunta, Perguntas.Resposta, Resultado.RANK
FROM Perguntas, CONTAINSTABLE(Resposta, " SQL Server") AS Resultado
WHERE Perguntas.IdPergunta = Resultado.[KEY]
ORDER BY Resultado.RANK Desc

SELECT Perguntas.Pergunta, Perguntas.Resposta, Resultado.RANK
FROM Perguntas INNER JOIN CONTAINSTABLE (Resposta, "SQL Server") AS Resultado
ON Perguntas.IdPergunta = Resultados.KEY


O predicado FREETEXTTABLE

É o equivalente a CONTAINSTABLE porém realizando buscas de FREETEXT.

Autoria e outras referências sobre este artigo

Manuais relacionados com este artigo
Dentro de Tutorial de SQL

Categorias relacionadas
Através das categorias do nosso diretório podem ser encontrados outros tipos de recursos relacionados com este artigo:
+ Entrar em Linguagem SQL


Comentário sem rever
Entre os comentários não revistos podem ter alguns interessantes que tenham sido enviado recentemente.
 Foi encontrado um comentário sem rever

VerVer os comentários não revistos



Sobre nós | Copyright | Anuncie | Entrar em contato <criarweb>

Hospedado por Hostnet Hospedagem de Sites