ahsc 1 Denunciar post Postado Novembro 23, 2012 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
Motta 645 Denunciar post Postado Novembro 23, 2012 O MySql tem uma busca por texto, já tentou com ela ? Compartilhar este post Link para o post Compartilhar em outros sites
ahsc 1 Denunciar post Postado Novembro 23, 2012 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
Motta 645 Denunciar post Postado Novembro 23, 2012 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
ahsc 1 Denunciar post Postado Novembro 23, 2012 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
Motta 645 Denunciar post Postado Novembro 24, 2012 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
ahsc 1 Denunciar post Postado Novembro 24, 2012 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
Motta 645 Denunciar post Postado Novembro 24, 2012 Tenta com o LIKE , nao deve ser tao lento assim. Compartilhar este post Link para o post Compartilhar em outros sites
ahsc 1 Denunciar post Postado Novembro 26, 2012 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
Motta 645 Denunciar post Postado Novembro 26, 2012 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