Pesquisando no Índice
Início  Anterior  Próximo

minilogowi


seta 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 searchBusca por documentos contendo "text" e que preferencialmente também contenha "search"  
 
giants -footballBusca por "giants" mas omite os documentos contendo "football"  
 
author:gosling javaBusca 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.