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

minilogowi


seta 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:

estrutura_pastas

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.