Ir para conteúdo

POWERED BY:

Arquivado

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

ahsc

achar itens relacionados

Recommended Posts

Olá, tenho uma dúvida.

 

Eu preciso fazer um select em um produto e exibir seus itens relacionados de acordo com a descrição desse produto. Por exemplo:

 

o produto A tem a descrição (ótimo para lavar carro, motos. última tecnologia)

o produto B tem a descrição (lavar pisos e revestimentos, tecnologia de ponta)

o produto C tem a descrição (aparelho com tecnologia de ponta e ótimo para usar em carros)

 

Assim, eu faria um select normal em um item e pegaria sua descrição. À partir dessa descrição eu faria um comparativo para ver se outros produtos têm alguma palavras correlacionadas e exibiria esses produtos correlacionados.

 

Tentei usar o IN mais não saiu como eu queria. Alguém em alguma ideia de como isso é possível?

 

Obrigado

 

Alexandre

Compartilhar este post


Link para o post
Compartilhar em outros sites

O MySql tem uma busca por texto, já tentou com ela ?

Cara, eu não conhecia esse comando. Vou tentar. Se der certo, posto aqui.

vlws

 

Cara, eu não conhecia esse comando. Vou tentar. Se der certo, posto aqui.

vlws

Não vai dar para usar a sua sugestão pois meu bd esta em InnoBD enquanto que o comando MATCH AGAINST é usado somente para bds MyIsan.

 

Vou procurar outra alternativa.

 

Vlws

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se é isto mas,

1) O usuario preenche um edit [LAVAR CARRO DETERGENTE]

2) Se separa num array [LAVAR,CARRO,DETERGENTE]

3) Com base no número de ocorrências do array se monta uma query dinamica

 

select *
from tabela
where (
      texto like '%LAVAR%'
      or
      texto like '%CARRO%'
      or
      texto like '%DETERGENTE%'
      )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se é isto mas,

1) O usuario preenche um edit [LAVAR CARRO DETERGENTE]

2) Se separa num array [LAVAR,CARRO,DETERGENTE]

3) Com base no número de ocorrências do array se monta uma query dinamica

 

select *
from tabela
where (
      texto like '%LAVAR%'
      or
      texto like '%CARRO%'
      or
      texto like '%DETERGENTE%'
      )

Eu tentei implementar o que você tinha me sugerido e dava erro. Daí eu fui pesquisar e o problema está em como você monta o BD, se InnoBD ou MyISAM. Daí o erro. Essa sua solução parece ser bem interessante mas eu não sei se, para um fluxo muito grande de informação, vai deixar a aplicação lenta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma tabela filha poderia ser criada esta teria as palavras chave da busca.

 

Ex "detergente para lavar carro e moto"

 

Teria algo assim

1 detergente

2 lavar

3 carro

4 moto

 

Esta tabela teria um indice pela palavra chave e a busca seria por igualdade e nao por like o que seria mais rapido.

 

Mas de qualquer forma buscas deste tipo nao sao rapidas em bds sql.

Procure ler sobre banco noSql pode ser um caminho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma tabela filha poderia ser criada esta teria as palavras chave da busca.

 

Ex "detergente para lavar carro e moto"

 

Teria algo assim

1 detergente

2 lavar

3 carro

4 moto

 

Esta tabela teria um indice pela palavra chave e a busca seria por igualdade e nao por like o que seria mais rapido.

 

Mas de qualquer forma buscas deste tipo nao sao rapidas em bds sql.

Procure ler sobre banco noSql pode ser um caminho.

Cara, minha estrutura está toda prontinha em mysql. Mudar para nosql seria mudar tudo. Eu tenho uma tabela de produtos que tem os produtos cadastrados e nela tem um campo de descrição. Eu seleciono um produto e quero comparar a descrição dele com o outros e trazer as ocorrências que baterem. Sinceramente, achei que seria mais simples, mas....

 

Eu posso até jogar isso numa array e depois comparar, mas acho que isso vai consumir muito recurso. A aplicação será bem grande com vários acessos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta com o LIKE , nao deve ser tao lento assim.

Cara, com like num rola. EU consegui resolver mas não numa query filtrando os dados. Rodei a query, depois peguei os dados do produto e transformei numa array separada por vírgulas. Pequei todos os outros produtos (máximo de 10e de forma randômica), trouxe seus dados e pus em uma outra array também separadas por vírgula.

 

Depois que eu fiz isso, utilizei o array_in do php para ver se o que tinha na array principal (o produto escolhido) tinha nas outras arrays. Aí eu consegui acertar sem maiores problemas. Depois eu posto minha solução aqui. Lógico que ainda precisa ser refinado mas já é uma solução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais pelo visto não vai pesquisar todos os produtos.

máximo de 10e de forma randômica

 

Não seria um problema ?

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.