capnet43.jpg

Clique aqui para ler todos os artigos desta edição

Boa Idéia

Navegação Intuitiva

Crie um mecanismo de pesquisa mais eficaz para o usuário

 

Este artigo discute

Este artigo usa as seguintes tecnologias

·       Alternativas para interfaces de pesquisa;

·       GridView;

·       DataList.

Visual Studio 2005, ASP.NET 2.0, C#, AJAX.

 

O que você acha dos mecanismos de pesquisa que temos disponíveis na internet? Como entusiasta de tecnologia que sou, fico impressionado com algumas situações peculiares. Só na internet é que podemos dizer que 99 milhões é igual a zero. Pesquise algo como a palavra “mesa” em um site de busca qualquer e você entenderá o que eu estou dizendo.

Na maior parte das vezes, quando pesquisamos na internet, recebemos um conjunto tão grande de resultados, que torna nossa pesquisa praticamente nula, pois não temos artifícios inteligentes e rápidos para refinar o resultado da pesquisa, a fim de encontrar o resultado que seja mais importante para nós.

 Enfim, hoje em dia está cada vez mais difícil encontrar informação de qualidade na Web, e são raros os sites de busca que oferecem meios para que você consiga encontrar a informação desejada com rapidez.

Entretanto, existem alguns sites mais específicos que tentam disponibilizar interfaces de pesquisa mais inteligentes, ajudando o usuário a refinar suas buscas e encontrar com mais facilidade a informação que precisa. Um exemplo muito interessante é o do www.dabs.com. Neste site é possível realizar compras de equipamentos eletrônicos, e temos uma opção de busca no topo da página principal.

Faça um teste digitando no campo search a palavra “PDA”, e em seguida clique em Go. Veja que abaixo, você terá um Grid com diversos itens relacionados. Um pouco antes desse Grid, como você pode conferir na Figura 1, temos algumas opções para o refinamento da busca.

 

Figura 1. Refinamento de pesquisa do site www.dabs.com

Veja que temos o resultado da pesquisa todo categorizado. Essas categorias definem algumas características dos produtos encontrados na pesquisa, como Marca, Tipo, Modelo etc. Assim, se o usuário clica em uma das categorias encontradas, como por exemplo em Palm, a pesquisa será refeita e o resultado reduzido apenas aos PDAs da marca Palm.

Enfim, esse é um meio muito inteligente de ajudar o usuário a encontrar o produto que precisa dentro do site. Vamos então neste artigo, simular uma aplicação que faça exatamente esse tipo de refinamento de pesquisa. Mãos à obra!

AdventureWorks

É claro que para implementarmos uma busca desse tipo precisamos de um banco, de preferência com dados. Para isso, vamos utilizar o AdventureWorks, que é um banco utilizado em testes e exemplos pela Microsoft.

Você o encontra para download no seguinte link: www.microsoft.com/downloads/details.aspx?familyid=e719ecf7-9f46-4312-af89-6ad8702e4e6e&displaylang=en. Se você ainda não tem o AdventureWorks, baixe-o e instale-o em seu SQL Server.

         Nele temos um conjunto de tabelas de produtos, relativos a artigos esportivos, mais especificamente bicicletas e acessórios. Esses produtos farão parte da nossa base de pesquisa.

Quando você for implementar uma pesquisa desse tipo, o primeiro passo é definir as classificações que você quer disponibilizar ao usuário, para que ele possa refinar a pesquisa. Portanto, devemos identificar essas classificações no banco.

A seguir, dê uma olhada na Figura 2. Veja que temos no centro a tabela Product, onde teremos todos os produtos da base. Em volta dessa, temos uma série de tabelas relacionadas. As que estão marcadas com um círculo vermelho são as que utilizaremos como classificação de pesquisa.

 

Figura 2. Tabelas que utilizaremos no AdventureWorks

Assim classificaremos os produtos por: Marca (Vendor), Modelo (ProductModel), Categoria (ProductCategory) e SubCategoria (ProductSubCategory). Adicionalmente, também foi destacado o atributo Color na tabela Product. Com esse atributo também podemos classificar os produtos pela Cor.

Views

Agora precisamos definir os SELECTs que serão utilizados para as pesquisas e classificações. Note que essas tabelas possuem uma série de atributos que não utilizaremos. Como nossa aplicação servirá apenas para pesquisa, um artifício muito interessante para facilitar o trabalho é o uso de Views no banco.

Utilize o Management Studio (ou até mesmo o Visual Studio 2005) e acesse o banco AdventureWorks. Clique com o botão direito sobre a pasta View e escolha a opção New View. Na área do SELECT digite o comando da Listagem 1. Em seguida execute a View e confira o resultado na Figura 3.

 

Listagem 1. Select para View de Produtos

SELECT p.ProductID AS ID,

  p.Name AS Nome,

  ISNULL(p.ListPrice, 0) AS Preco,

  ISNULL(p.Size, 0) AS Tamanho,

  ISNULL(CONVERT(int, p.Weight), 0) AS Peso,

  ISNULL(v.Name, 'Genérico') AS Marca,

  ISNULL(p.Color, 'Sem Cor') AS Cor,

  ISNULL(c.Name, 'Genérico') AS Categoria,

  ISNULL(s.Name, 'Genérico') AS SubCategoria,

  ISNULL(m.Name, 'Genérico') AS Modelo

FROM Production.Product AS p

  LEFT OUTER JOIN Purchasing.ProductVendor AS pv

  ON pv.ProductID = p.ProductID

  LEFT OUTER JOIN Purchasing.Vendor AS v

  ON pv.VendorID = v.VendorID

  LEFT OUTER JOIN Production.ProductModel AS m

  ON p.ProductModelID = m.ProductModelID

  LEFT OUTER JOIN Production.ProductSubcategory AS s

  ON p.ProductSubcategoryID = s.ProductSubcategoryID

  LEFT OUTER JOIN Production.ProductCategory AS c

  ON s.ProductCategoryID = c.ProductCategoryID

 

 

Figura 3. View de Produtos

Veja que nesse SELECT já estamos realizando alguns tratamentos importantes. Como por exemplo, alguns campos podem ter valores nulos, que dificultam na hora de trabalharmos com os dados na interface. Veja que estamos substituindo os valores nulos por valores como zero (0), Genérico ou Sem Cor no caso da Cor.

Outra característica importante da View é que estamos definindo rótulos para os campos que serão utilizados. Isso também facilitará muito quando formos tratar com o retorno dos dados. Para finalizar, basta salvar a View com o nome de “vw_Produtos” e fechá-la.

...

Quer ler esse conteúdo completo? Tenha acesso completo