USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  ASP - Active Server Page    (Miscelâneas)

Título da Dica:  Index Server , esse desconhecido
Postada em 16/10/2003 por ^HEAVY-METAL^            
Quando um site começa a crescer , torna-se necessário um sistema de
procura . Você pode instalar vários daqueles produtos de terceiros , os
chamados "search engines" , ou criar um desnecessário banco de dados e
perder horas com rotinas para fazer isso , ou pode utilizar o Index
Server que vem juntamente com o IIS , que pode realizar esse serviço
para você , e até mesmo para outros tipo de procura de documentos .
Mas o que é Index Server ? Na documentação on-line da Microsoft , é
definido de maneira direta :


Indexing Service is a Microsoft® Windows® 2000 service that indexes
files on your disks and their properties as well as your Internet
Information Services (IIS) Web files and properties. Indexing Service
stores the resulting information in catalogs that you can efficiently
search using a variety of queries.



Isto é :


O Indexing Service é um serviço do Microsoft® Windows® 2000 que organiza
arquivos nos seus discos , assim como seus aquivos Web do Internet
Information Services (IIS) e propriedades . O Indexing Service guarda o
resultado da informação em catálogos para que você possa procurar de
forma eficiente usando uma variedade de solicitações .


O Index Server permite que você execute "Queries" (Solicitações) para o
servidor utilizando ADO e OLE DB . Isso permite o uso e a flexibilidade
de maneira a facilitar a procura de algum arquivo .


O Objeto Index Server


O Index Server é criado como qualquer outro objeto COM do seu servidor :


dim ixQuery   ' O Obejto query do Index Server .
set ixQuery = Server.CreateObject("ixsso.Query")



Esse objeto tem um número de propriedades que podem ser definidas antes
de rodar a query. As mais utilizadas são :


Columns


-Permite você especificar quais os campos que serão retornados para a
sua query . Para uma lista completa de tudo que pode ser definido aqui ,
aconselho procurara no help , mas para o nosso exemplo vamos retornar o
seguinte :


doctitle - O título da página (especificado pela tag <TITLE>...</TITLE> ) ;
vpath - O caminho virtual da página ;
characterization - A descrição da página ;
rank - O valor especificado como padrão para bater com o critério da
procura ;


ixQuery.Columns = "doctitle, vpath, size, characterization, rank"



Sortby


-Especifica como os resultados encontrados serão ordenados . Lista os
campos em uma ordem relevante , e usa "[d]" para especificar que o campo
deve ser ordenado de forma descendente .


ixQuery.SortBy = "rank[d], doctitle"



MaxRecords


- Você deve limitar o número máximo de resultados que a query pode
retornar .


ixQuery.MaxRecords = 300



Catalog


Um Catalogo representa o resultado da indexação para um diretório
específico (ou diretórios ) . Se você não especificar um catálogo então
o Index Servcer usará o catalogo do Default Web Site ( cuja indexação
começa em /inetpub/wwwroot ). Algumas vezes você pode querer especificar
um catálogo . Se seu site estiver em um diretório diferente você poderá
criar catálogos multiplos para diferentes páginas de procura .


Para definir um Catálogo , vá até o Index Server , que se encontra na
opção "Services and Applications" , dentro do item do "Administrative
Tools"  , Computer Managment (Start -> Programs -> Admin. Tools ) .
Clique com o botão direito em "Indexing Services" e selecione New ->
Catalog . Entre o nome do novo catálogo e a localização do diretório que
você quer indexar . Você também pode especificar diretórios dentro da
árvore de diretórios que não devem ser indexados , mantendo o controle e
a privacidade de determinados diretórios .


Especifique o catalogo que você irá utilizar com o seguinte código ( No
meu exemplo , indexaria o diretório Lula_Pro ) :


ixQuery.Catalog = "Lula_Pro"



Abra o Internet Service Manager ( também conhecido como IIS ) , abra a
caixa de propriedades do seu site , selecione o tab "Home Directory" e
verifique que a opção "Index this resource" esteja selecionada .


Query


A Query atual . É ela quem faz toda a operação de indexação . O index
Server suporta 3 linguagens para a construção da query : Dialect 1
(Index Server 1.0), Dialect 2 (Index Server 3.0) and SQL (Index Server
2.0 and above). Dê uma olhada no MSDN sobre "Query Languages for
Indexing Service^ para uma explicação completa das diferentes linguagens .


Em nosso caso , vamos trabalhar com o mais simples , que é o dialect 1 ,
mas se sinta a vontade para utilizar sintaxes SQL , se preferir .
A grosso modo , você pode simplesmente definir a propriedade Query do
seu Objeto Index Server como o alvo da sua procura . Por exemplo , se
você estivesse procurando por todas as páginas que contenham a palavra
"Lula" , você usaria :


ixQuery.Query = "Apples"



Pode pode refinar essa procura especificando quais arquivos devem e
quais arquivos não devem ser procurados , O modo como a target do query
deve ser interpretada ( como uma frase, um texto livre ou uma procura
exata ) e também o tipo de páginas que será procuradas (por exemplo ,
páginas escritas em uma certa data , ou menores que um determinado
tamanho) .


Um exemplo de uma procura livre por um texto , na frase 'ASP 4
Developers' , nós usuariamos :


$contents ASP 4 Developers


Para defnir restrições utilizamos o prefixo arroba "@" em um campo
pré-definido e uma expressão . Por exemplo :


@size < 1000000     ' O tamanho do arquivo deve ser menor que  1,000,000
bytes
@contents Lula   ' O conteúdo precisa conter a palavra "Lula"
@write > 74/09/30   ' A página deve ter sido escrita no dia 30 de
setembro de 1974 (aa/mm/dd , usando default )


Restrições do nome do arquivo devem conter o prefixo "#" para
especificar a procura regular da expressão :


#filename *.asp        ' pesquisar apenas arquivos .ASP
#vpath *\artigos*     ' procurar apenas no subdiretório artigos


Todas as expressões podem ser combinadas utilizando os operadores
booleanod AND , NOT , OR etc . Supondo que você queira procurar a
palavra "Lula" apenas em páginas ASP , e você gostaria de ignorar
aqueles diretórios criados pelas Front Page Server Extensions , os
"_vti"  sei lá o que . A sintaxe ficaria :


ixQuery.Query = "(#filename *.asp) AND (NOT #vpath *\_vti*) AND (Lula)"



O objeto Utility


O Objeto relacionado com o Index Server . Permite você definir até onde
irá a sua procura . Pode ser "shallow" ( para a procura apenas no
diretório ) ou "deep" (para uma procura recursiva em todos os diretórios
e subdiretórios ) .


dim util
set util = Server.CreateObject("ixsso.Util")
util.AddScopeToQuery ixQuery, Server.MapPath("/"), "deep"



O primeiro parâmetro especifica para qual objeto Index Server
relacionado a associação deve ser feita . O segundo especifica o caminho
físico onde a procura irá iniciar ( no exemplo , no diretório raíz ) . O
terceiro por fim especifica onde vai qual é o tipo da procura .


Fazendo a procura


Para rodar a Query atual , basta Query.CreateRecordset


dim queryRS   ' Query recordset.
set queryRS = ixQuery.CreateRecordSet("nonsequential")



Mostrando os resultados :


Para mostrar os resultados da pesquisa , faça um loop pelo recordset


Response.Write "<table width=100>"
do while not queryRS.EOF



' Recebe o título do documento . Se estiver em branco é mostrado
"Untitled".
dim docTitle
docTitle = queryRS("doctitle")



if docTitle = "" then docTitle = "Untitled"



' Mostra o # do registro , o link para o documento , a URL e a
caracterização
Response.Write "<tr>"
Response.Write "<td valign=top>" & recordNumber & ".</td>"
Response.Write "<td valign=top>"
Response.Write "<a href='" & queryRS("vpath") & "'>" & docTitle &
"</a><br>"
Response.Write "URL: http://" &
Request.ServerVariables("server_name") & queryRS("vpath") & "<br>"
Response.Write Server.HTMLEncode(queryRS("characterization"))
Response.Write "</td>"
Response.Write "</tr>"



recordNumber = recordNumber + 1
queryRS.MoveNext()

loop
Response.Write "</table>"

T+,
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página