Exibindo a Estrutura Hierárquica do Índice | Início Anterior Próximo

Exibindo a Estrutura Hierárquica do Índice

Com os passos descritos anteriormente já está disponível um simples porém funcional aplicativo de indexação e busca de documentos. A seguir veremos como exibir uma visão hierárquica em uma estrutura em árvore das informações dos documentos disponíveis no índice.
O índice hierárquico será montado baseado nas propriedades adicionais que foram definidas para o índice. A hierarquia exibida será de acordo com a ordem em que as propriedades adicionais foram listadas na hora da definição do índice. Em nossa aplicação, como definimos as propriedades adicionais ano, mes, dia e titulo, então a estrutura a ser gerada se assemelhará com a que segue:
Inicialmente vamos construir um frameset, composto de duas colunas onde uma dessas colunas terá duas linhas. Um dos frames exibirá um componente TreeView que representará a visão hierárquica do índice, um outro frame exibirá um formulário de pesquisa e um terceiro frame que exibirá o resultado das pesquisas. Para isso crie a página framepesq.wsp e coloque o seguinte código:

<HTML> <HEAD> <TITLE>Índice Hierárquico</TITLE> <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="expires" CONTENT="0"> </HEAD> <!-- frames --> <FRAMESET COLS="23%,*" > <FRAME NAME="treeview" SRC="treeview.wsp" MARGINWIDTH="10" MARGINHEIGHT="10" SCROLLING="auto" FRAMEBORDER="0" NORESIZE> <FRAMESET ROWS="21%,*"> <FRAME NAME="search" SRC="pesquisa.wsp" MARGINWIDTH="10" MARGINHEIGHT="10" SCROLLING="auto" FRAMEBORDER="0" NORESIZE> <FRAME NAME="searchMain" SRC="resultado.wsp" MARGINWIDTH="10" MARGINHEIGHT="10" SCROLLING="auto" FRAMEBORDER="0"> </FRAMESET> </FRAMESET> </HTML>

Note que o código acima faz referência a uma página chamada treeview.wsp, será ela que exibirá a estrutura em árvore das informações do índice. Primeiro crie-a e adicione dois eventos em seu pré-página:

Evento | Descrição
Gravar | gravar na variável tmp.indexName o nome do índice a partir do qual montará a árvore que no nosso caso é

modelo.
Conector Java
chamar a classe br.com.itx.modules.search.WIHierarchicalIndex
No código-fonte da página que será exibido a estrutura hierárquica do índice tem que ser levado algumas considerações. Primeiro, para que o TreeView seja montado e visualizado, o arquivo treeview.js terá de ser carregado inserindo a seguinte tag:

<SCRIPT TYPE="text/javascript" SRC="/wi3/treeview.js"></SCRIPT>

Além da tag acima, acrescente outra listando as propriedades do TreeView:
<SCRIPT>
/****************************
* Propriedades do TreeView *
****************************/
// identificador único para esse TreeView (não altere essa opção)
UniqueID = "JS_TreeView_docu";
// diretório raiz dos links (não altere essa opção)
DocRoot = "";
// diretório das "peles" do TreeView. As opções disponíveis são:
// /wi3/images/grafix/win/
// /wi3/images/grafix/mac/
// /wi3/images/grafix/hlp/
// /wi3/images/grafix/os2/
ImgRoot = "/wi3/images/grafix/win/";
// página que contém o FRAMESET que chama o índice
FrameSet = "";
// largura da imagem (não altere essa opção)
ImgWidth = 14;
// altura da imagem (não altere essa opção)
ImgHeight = 18;
EntryHeight = ImgHeight;
// chave inicial (não altere essa opção)
InitialKey = "";
// cor de fundo da página
CurrPageBG = "#000099";
// cor de frente da página
CurrPageFG = "#FFFFFF";
LinkCurrPage = true;
// texto a ser apresentado como dica do nó raiz do índice
TreeRootHint = "";
// texto a ser apresentado como dica de um link para uma página
NormalPageHint = "";
// texto a ser apresentado como dica de um link
LinkedPageHint = "";
// texto a ser apresentado como dica da figura que fecha um ramo da árvore
OpenBookHint = "Fechar";
// texto a ser apresentado como dica da figura que abre um ramo da árvore
ClosedBookHint = "Abrir";
OpenBookStatus = "Fechar sub-lista";
ClosedBookStatus = "Abrir sub-lista";
// mensagem que aparece na barra de status do browser
window.defaultStatus = "Árvore dos arquivos do índice";
// mensagem a ser exibida quando o índice não fizer parte de um FRAMESET
// e a propriedade checkFrames estiver setada para true
navExplain = "\nThis page normally belongs inside a navigation" + " frame.\n\nIs it OK to reload the page as designed ?";
// fontes a serem usadas pelo índice
FontFace = "Verdana,Times New Roman,Times,serif";
compactTree = false;
viewMatchCnt = 0;
// indica se visualiza apenas um ramo da árvore
singleBranch = false;
// indica se será feita a verificação se o índice faz parte de um FRAMESET
checkFrames = false;
//baseHref="_self";
/**
* método que monta a query da pesquisa de acordo com o link.
*/
function sendQuery(key) {
var flds = fields.split("^");
var keys = key.split("^");
var query = "";
for (var i = 0; i < flds.length; i++) {
if (keys[i]) {
sep = (i == 0) ? "" : " AND ";
query += sep + flds[i] + ":\"" + keys[i] + ";
}
}
if (top.frames["search"]) {
top.frames["search"].document.forms[0].target = "searchMain";
top.frames["search"].document.forms[0]["tmp.search.query"].value = query;
top.frames["search"].document.forms[0].submit();
}
}
</SCRIPT>
Por fim, coloque dentro da tag <BODY> a referência à variável |tmp.search.tree| que é criada pela classe br.com.itx.modules.search.WIHierarchicalIndex e que retorna a estrutura em árvore das propriedades dos documentos que fazem parte do índice.
Para mostrar mais uma funcionalidade do WI Search, acrescente agora o recurso de destaque de termos no texto de acordo com o critério de pesquisa. Para isso, na página visualizar.wsp desative o evento Download e acrescente os eventos de Importar Arquivo e Concetor Java.
Para configurar o evento Importar Arquivo faça as seguintes definições:

Campo | Valor
Objeto | content

Condição verdadeira
|wi.proj.path|/documentos/|tmp.arquivo|
Com a configuração, o conteúdo do arquivo que antes era feito o download agora está armazenado na variável content. O próximo passo será a configuração da classe Java que irá recuperar o conteúdo dessa variável e destacar os termos. Para isso, adicione um Conector Java com as seguintes configurações:

Campo | Valor
Condição | |queryDestaque| !=

Nome da classe
br.com.itx.modules.search.Highlighter
Por fim substitua o conteúdo da página visualizar.wsp pela referência à variável content, com isso sempre que essa página for solicitada o seu conteúdo corresponderá ao conteúdo do arquivo passado pela variável tmp.arquivo com os termos em destaque.