Pesquisando no Índice | Início Anterior Próximo

Pesquisando no Índice

Para realizar a busca nos documentos indexados vamos agora criar a página que realiza a busca e a que exibirá os possíveis resultados dessa pesquisa. Crie a página de pesquisa com um formulário HTML e que contenha obrigatoriamente as seguintes variáveis:

Variável | Descição
tmp.indexName

indica o nome do índice que será usado para realizar a pesquisa.
tmp.search.query
contém a query de pesquisa. O mecanismo de busca adotado pelo WI Search suporta uma série de recursos tais como pesquisas booleanas, pesquisas por pré-fixos, construção de queries com uso de parêntesis, etc.
O processador de queries que vem embutido no WI Search suporta a maioria dos padrões de queries adotados pelos mecanismos de buscas mais conhecidos, para conhecer as possíveis queries que podem ser montadas clique aqui. Como exemplo:

free AND "text search"

Busca por documentos contendo "free" e a expressão "text search"

+text search | Busca por documentos contendo "text" e que preferencialmente também contenha "search"

giants -football | Busca por "giants" mas omite os documentos contendo "football"

author:gosling java | Busca por documentos contendo "gosling" na propriedade adicional author e java no conteúdo do documento

Logo abaixo segue uma sugestão para o código-fonte da página de pesquisa.

<HTML> <HEAD> <TITLE>Formulário de Pesquisa</TITLE> <META HTTP-EQUIV=PRAGMA CONTENT=NO-CACHE> <META HTTP-EQUIV=EXPIRES CONTENT=0> </HEAD> <BODY BGCOLOR="#D5EEE2"> <FORM ACTION="pesquisa.wsp" METHOD="post"> <INPUT TYPE="hidden" NAME="tmp.indexName" VALUE="modelo"> Expressão:<BR> <INPUT TYPE="text" NAME="tmp.search.query" size='40' value="|tmp.search.query|"> <input type="checkbox" value="AND" name="tmp.search.queryOperator" |$if(|tmp.search.queryOperator|=AND, checked,)$| /> Com todas as palavras <br> <INPUT TYPE="submit" NAME="tmp.procurar" VALUE="Procurar"> <INPUT TYPE="reset" VALUE="Limpar Campos"> </FORM> |$if(|tmp.procurar|=Procurar, <P STYLE="FONT: 8pt Verdana\,Arial;">|tmp.resposta|</P> |grid.resultadoPesquisa| |grid.resultadoPesquisa.link| ,)$| </BODY> </HTML>

Note que na página acima aparece um grid Java com os resultados da pesquisa, a classe br.com.itx.modules.search.SearchGrid é a responsável pela montagem desse grid Java. Primeiramente vamos criar um grid HTML do tipo JAVA, para isso clique no link Projeto / Grid, escolha a opção Grids HTML e preencha os seguintes valores:

Campo | Valor
Identificador | resultadoPesquisa
Tipo

JAVA
O resultado de uma pesquisa usando a classe br.com.itx.modules.search.SearchGrid retorna além de todas as propriedades adicionais definidas para os documentos do índice algumas outras propriedades que são incorporadas automaticamente em cada documento durante a publicação, a saber:

Propriedade

Descrição
iddoc
retorna o identificador único do documento associado durante a publicação.
path
retorna o caminho absoluto do arquivo no servidor.
relativePath
retorna o caminho do diretório do arquivo relativo ao repositório do índice.
absolutePath
retorna o caminho absoluto (completo) do diretório do arquivo no servidor.
fileName
retorna o nome do arquivo.
title
retorna o conteúdo tag TITLE de um arquivo HTML.
Além da classe br.com.itx.modules.search.SearchGrid o WISearch também oferece ao desenvolvedor a classe br.com.itx.modules.search.SearchObjcet para realizar pesquisas no índice. A diferença é que através da classe SearchObject o resultado da pesquisa é estruturado na forma de um objeto do WebIntegrator onde o identificador do objeto é configurado através da variável tmp.prefix, o restante do funcionamento é semelhante, inclusive as variáveis disponíveis.
Logo abaixo, segue um exemplo de como poderia ser o modelo do grid a ser adotado para exibir o resultado da pesquisa:

<TABLE BORDER="1" CELLSPACING="0" CELLPADDING="3" WIDTH="100%"> <TR> <TH BGCOLOR="#c0c0c0">Título do documento</TH> <TH BGCOLOR="#c0c0c0">Data</TH> </TR> <TR> <TD><A HREF="visualizar.wsp?tmp.arquivo=|name|">|titulo| (|filename|)</A> </TD> <TD ALIGN="center">|dia|/|mes|/|ano|</TD> </TR> <TR> <TD COLSPAN="2" ALIGN="center">Nenhum documento encontrado!</TD> </TR> </TABLE>

Definido o grid Java, no pré-página da página de pesquisa coloque um evento Grid Java com os seguintes campos preenchidos:

Campo | Valor
Condição

true
Nome da classe
br.com.itx.modules.search.SearchGrid
Grid
resultadoPesquisa
Para exibir maiores informações sobre a pesquisa feita, vamos criar uma variável que informará a query pesquisada, o tempo de duração de pesquisa e a quantidade de documentos que foi encontrada. Para isso, adicione um elemento Gravar com as seguintes definições:

Campo | Valor
Condição

|tmp.search.query| !=
Objetos
tmp.resposta
Se condição verdadeira
A pesquisa por <B>|tmp.search.query|</B> demorou <B>|tmp.search.time|</B> ms para encontrar <B>|tmp.search.count|</B> documento(s)!
O resultado de uma pesquisa feita pelo WISearch, por default, vem ordenado de acordo com a taxa de acerto (hit) baseada na query que foi realizada a pesquisa mas o desenvolvedor pode alterar esse comportamento para que o resultado venha ordenado por uma das propriedades do documento. Para isso atribua à variável tmp.searchResult.orderBy o nome da propriedade cujos valores serão ordenados, caso queira que os valores venham em ordem inversa (do maior para o menor) atribua à variável tmp.searchResult.reverse o valor true. A variável tmp.searchResult.reverse apenas funciona em conjunto com a variável tmp.searchResult.orderBy e seu valor default é false.
No modelo do grid existe um link para uma página chamada visualizar.wsp, página essa que pode ser usada para exibir o conteúdo do arquivo. Para isso defina um evento Download do tipo Local com a seguinte configuração:

Campo | Valor
Identificador

downDoc
Diretório
|wi.proj.path|/documentos
Arquivo
|tmp.arquivo| (perceba que no link que chama a página visualizar.wsp a variável tmp.arquivo é passada com o nome do arquivo)
Após isso crie a página visualizar.wsp e em seu pré-página coloque o download recém-configurado. Com isso tente fazer algumas pesquisas no índice, a seguir veremos como criar uma página de remoção de documentos do índice.