Acesso direto ao conteúdo
Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Aprenda inglês de uma vez por todas

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

MySQL Full-text Search in Boolean Mode

Colaboração: João Batista Borges Neto

Data de Publicação: 23 de Abril de 2006

Para quem utiliza o MySQL em alguma aplicação e gostaria de prover ao seu sistema de busca operadores avançados para otimizar a sua expressão de busca, assim como os utilizados pelo sistema de busca do Google, aqui vai uma dica interessante.

A partir da versão 3.23.23 do MySQL, existe o suporte à busca full-text. A busca se dá em índices do tipo FULLTEXT, que podem ser dos tipos CHAR, VARCHAR ou TEXT.

Um índice FULLTEXT pode ser criado durante o CREATE TABLEou após com o **ALTER TABLE.

Uma busca full-text se dá através da função:

  MATCH (col1,col2,...) AGAINST (expr [search_modifier])

Existem dois tipos de modificadores de busca que podem ser usados, IN BOOLEAN MODEe WITH QUERY EXPANSION. Na versão 5.1 do MySQL adicionaram suporte aos modos IN NATURAL LANGUAGE MODE e IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION mas ainda não tive acesso aos mesmos.

Nesta dica tratarei apenas do tipo IN BOOLEAN MODE no MySQL 4.x.

Uma busca full-text simples pode ser:

  SELECT * FROM articles WHERE MATCH (title,body) 
    AGAINST ('database' IN BOOLEAN MODE)

Para 'title' e 'body' sendo campos da tabela 'articles', é necessário haver um índice FULLTEXT que contenha esses dois campos, e não possuir dois índices onde um possua o campo 'title' e o outro possua o 'body'. Aqui fiz testes no MySQL versão 4.0.25-standard e ocorre erro caso o índice não possua exatamente os campos descritos no MATCH.

Em uma busca full-text IN BOOLEAN MODE, você poderá usar alguns operadores de otimização, como o + (mais), - (menos), * (asterisco), "" (aspas), () (parênteses), <> (maior ou menor que) e ~ (til).

A função dos operadores é a de otimizar a expressão de busca, por exemplo, uma busca por casa* irá retornar resultados que contenham as palavras casa, casarão, casamento, etc. Assim como uma busca sendo feita por casa +azul, irá retornar as ocorrências que tiverem obrigatoriamente a palara azul e opcionalmente a palavra casa. E assim por diante.

Por default, o limite mínimo de caracteres de uma palavra buscada nesse modo é de 4. Mas que pode ser alterado pela variável ft_min_word_len, definindo-a no arquivo de configurações do MySQL (aqui no slackware linux está em /etc/my.cnf), na seção [mysqld].

Você pode visualizar o valor mínimo configurado no seu MySQL através do comando SHOW VARIABLES.

Para mais informações sobre o uso de buscas full-text, vá ao site do MySQL. Pesquisa Full-text no MySQL em Português, ou Full-Text Search Functionsem Inglês.

Veja a relação completa dos artigos de João Batista Borges Neto

Formato PDF
Newsfeed RSS
Formato para impressão
PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.01/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (1456 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Treinamentos, Consultorias e Soluçoes em TI. Baseados em softwares livres e padrões abertos para ambientes de missão crítica

Submarino.com.br

As Palavras Mais Comuns da Língua Inglesa (2ª edição)