Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RSM

Pesquisa refinada

Recommended Posts

Tenho uma tabela contendo nomes de ruas e uma tela para pesquisar.Gostaria de usar um recurso que vejo na maioria dos sites de mapas digitais.Por exemplo: tenho um registro com uma rua chamada victor ferreira do amaralcomo sei que os usuários ao usarem a tela de pesquisa não vão digitar palavras exatas gostaria de ajuda-los com outras sugestões:ex: se fosse digitado: vitor ferreira do amaral mesmo assim ele retornasse o registro contendo a rua victor ferreira do amaral, ou ainda se fosse pesquisado: victor do amaral ele retornasse o registro contendo a rua victor ferreira do amaral.alguem ja desenvolveu alguma rotina que podesse retornar esses registros que tem semelhança com o conteúdo digitado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que talvez resolva.select * from Ruas where Nome like replace ('nomedarua', ' ', '%')Resutado: select * from Ruas where Nome like 'vitor%ferreira%do%amaral'Até mais,Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia.você poderia utilizar o CONTAINS, que também encontra palavras pela proximidade, diferentemente do like que a parte informada deve ser igual.Ex.:

SELECT ruaFROM endereco WHERE CONTAINS(rua, ' "vitor*" Or "vitor ferreira*" ')

Espero ter ajudado.Att,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que talvez resolva.

 

select * from Ruas where Nome like replace ('nomedarua', ' ', '%')

 

Resutado: select * from Ruas where Nome like 'vitor%ferreira%do%amaral'

 

Até mais,

 

Renato

<{POST_SNAPBACK}>

Caro Renato,

 

A tentativa é de tentar trazer várias possibilidades para o usuário, ex: se existisse uma rua chamada 'vitor jose amaral', ou 'vitor do amaral' eu gostaria de apresentá-la, portanto acho que deveríamos separar as palavras informadas e buscá-las separadamente, as que tivessem duas ocorrências aparecessem primeiro, depois as que tiveram uma ocorrência. mas isso ainda não sei fazer, será que voce teria uma outra sugestão?

 

agradecido,

 

 

Robison Maia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia.

 

você poderia utilizar o CONTAINS, que também encontra palavras pela proximidade, diferentemente do like que a parte informada deve ser igual.

 

Ex.:

SELECT *
FROM ruas WHERE CONTAINS(nome, ' "vitor*" Or "vitor ferreira*" ')

 

Espero ter ajudado.

 

Att,

<{POST_SNAPBACK}>

Ola Marcus,

 

Agradeço sua ajuda mas ao tentar sua sugestão recebi a seguinte resposta:

 

Cannot use a CONTAINS or FREETEXT predicate on table 'Ruas' because it is not full-text indexed.

 

como posso contornar isso?

tem alguma contra indicação de usar um full-text indexed?

e caso na rua contivesse o nome 'victor' com c será essas funções (CONTAINS or FREETEXT) também retornariam o registro?

 

Agradecido

 

Robison Maia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde.Não tem contra-indicação alguma, inclusive o FULLTEXT serve exatamente para fazer o q você precisa.Quanto ao Victor com ou sem 'c', o CONTAINS verificar a semelhança sonora da palavra, portanto ele traria as duas opções em caso de existencia.Espero ter ajudado.Att,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde.

 

Não tem contra-indicação alguma, inclusive o FULLTEXT serve exatamente para fazer o q você precisa.

 

Quanto ao Victor com ou sem 'c', o CONTAINS verificar a semelhança sonora da palavra, portanto ele traria as duas opções em caso de existencia.

 

Espero ter ajudado.

 

Att,

<{POST_SNAPBACK}>

Ola Marcus, Agradeço pela resposta, mas começaram a vir outros problemas, esse banco esta em provedor de internet, portanto não tenho acesso ao enterprise manager e eu gostaria de saber como poderei criar essa coluna FULLTEXT?

 

tem como fazer isso via instrução SQL usando query analyser?

 

Obrigado,

 

 

Robison Maia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite.o Fulltext não é uma coluna, é um tipo de índice.No BOL ver tem todos os comandos para configurar o FULLTEXT.Ah...o serviço FULLTEXT do SS (que está lá em Support Services) deve ser iniciado tb.Att,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite.

 

o Fulltext não é uma coluna, é um tipo de índice.

 

No BOL ver tem todos os comandos para configurar o FULLTEXT.

 

Ah...o serviço FULLTEXT do SS (que está lá em Support Services) deve ser iniciado tb.

 

Att,

<{POST_SNAPBACK}>

Ola Marcus,

Obrigado novamente.

 

No BOL?

 

Voce poderia esplicar melhor?

 

Voce conhece um banco MS SQL Server "On-line" que eu pudesse contratar de um provedor que disponibilizasse esse recurso?

 

Robison Maia

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.