..:: MX Studio Fóruns ::..: Sistema de busca com Verity Collections - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Sistema de busca com Verity Collections

#1 User is offline   Fichado 

  • Group: Membros
  • Posts: 27
  • Joined: 15-August 06

Posted 17 November 2006 - 08:43 AM

Fala galera!!
Seguinte...

Criei um .cfm para criar a collection no servidor (cria_collection.cfm):

ColdFusion
<cfcollection action="create" collection="collection" path="var/www/qualidade">


Rodei esta página, e a collection foi criada normalmente...

Depois criei outra página com a query e com a index:

ColdFusion
<CFQUERY NAME="q_GetResults" DATASOURCE="NAME">
SELECT arquivos.arquivo, arquivos.grupo, arquivos.usuario,
arquivos.tipo, arquivos.sequencia, arquivos.sequencia_procedimento,
arquivos.status, arquivos.versao_atual, arquivos.titulo, arquivos.sumario,
arquivos.descricao, arquivos.palavras_chaves, arquivos.nome_arquivo,
arquivos.codigo_docushare, arquivos.data_inicial, arquivos.data_atualizacao,
arquivos.data_expiracao, arquivos.grupos_adicionais, arquivos.normas, arquivos.categorizacao
FROM arquivos
WHERE arquivos.status = 'publicado'
ORDER BY arquivos.arquivo DESC
</CFQUERY>


<CFLOCK TYPE="EXCLUSIVE" TIMEOUT="30">

<CFINDEX
action="update"
COLLECTION="collection"
KEY="arquivo"
TYPE="CUSTOM"
TITLE="titulo"
QUERY="q_GetResults"
BODY="arquivo, grupo, usuario, tipo , sequencia , sequencia_procedimento, status, versao_atual, titulo, sumario, descricao, palavras_chaves, nome_arquivo, codigo_docushare, data_inicial, data_atualizacao, data_expiracao, grupos_adicionais, normas, categorizacao" custom1="usuario" custom2="tipo" >
</CFLOCK>


Depois criei este componente (consulta_arquivos.cfc):

ColdFusion

<cfcomponent displayname="pesquisa arquivo">
<cffunction name="lista_arquivo" output="0" returntype="query">
<cfargument name="criteria" type="string" required="true"/>

<CFSEARCH
COLLECTION="collection"
NAME="GetResults"
CRITERIA="#LCase(criteria)#">


<cfreturn GetResults>
</cffunction>




</cfcomponent>


Por fim, criei a página que vai mostrar o resultado da consulta (teste_busca_arquivo.cfm):

ColdFusion
<cfinclude template="header.cfm">

<cfprocessingdirective pageEncoding="ISO-8859-1">
<cfif not isDefined ("b_Search")>
<table width="880" align="center">

<form method="post" action="teste_busca_arquivo.cfm" >
<tr align="center" valign="top">
<td align="right"><b>Critérios: </b></td>
<td align="left">
<cfif not isdefined ("form.criteria")>
<input name="criteria" type="Text" id="criteria" tabindex="1" size="50" maxlength="50">
<cfelse>
<cfoutput>
<input name="criteria" type="Text" id="criteria" tabindex="1" value="#form.criteria#" size="50" maxlength="50">
</cfoutput>
</cfif>

<input type="submit" name="b_Search" value=" << Buscar >>">
</td>
</tr>

</form>
</table>
<cfelse>

<!--- <cfparam name="form.criteria" default=""> --->




<cfinvoke
method="lista_arquivo"
component="consulta_arquivos"
returnVariable="q_GetResults"
>
<CFIF (not isDefined("session.criteria")) >
<cfinvokeargument name="criteria" value="#form.criteria#">
<cfelse>
<cfinvokeargument name="criteria" value="#session.criteria#">
</CFIF>
</cfinvoke>

<!--- <cfoutput>#form.criteria#</cfoutput>
<cfabort> --->

<table width="880" align="center">
<tr>
<td height="100">
<table width="100%" height="70" border="0" align="center" cellpadding="0" cellspacing="0" >
<tr>
<CFOUTPUT>
<td height="16" align="center" nowrap colspan="5">Total de #q_GetResults.RecordCount# registros encontrados.</td>
</CFOUTPUT>
</tr>
<tr>
<td height="200" align="center" valign="top">
<cfif #q_GetResults.recordcount# neq 0>
<!--- <cfparam name="attributes.maxrows" default="15" type="numeric">
<cfparam name="attributes.thispage" default="1" type="numeric">
<cfparam name="attributes.groupsof" default="10" type="numeric">


<table width="100%" >

<tr>
<th >ID</th>
<th >Título</th>
<th >Usuário que cadastrou</th>
<th >Tipo de arquivo</th>
</tr>

<cfoutput query="q_GetResults"><!--- maxrows="15" startrow="#startrow#" --->
<tr>
<td >#arquivo#</td>
<td ><a href="javascript:Visualizar(#key#)" >#Title#</a></td>
<td >#Custom1#</td>
<td >#Custom2#</td>
</tr>
</cfoutput>
</table><hr width="85%" style="color:#006699;">
<!--- </cf_paginacao_1> --->
</td>
</cfif>
</tr>
</table>
</td>
</tr>
</table>

</cfif>

<cfinclude template="footer.cfm">


.....

A questão é...
Qualquer parametro q eu digitar na busca, ele traz 0 (zero) no recordCount da query (q_GetResults).... nunca acha nada!! sad.gif

Oq devo fazer?...... ALguém pode me dar uma luz do que eu estou fazendo de errado? =\


Muito obrigado pela ateção!!
0

#2 User is offline   Dsouza 

  • Group: Colunistas
  • Posts: 138
  • Joined: 16-September 05

Posted 17 November 2006 - 07:38 PM

Cara sua query esta perfeita.

Vc esta usando SQL server ?

1º Pode ser algum dado incompatível com o banco
2º Verifica seu Application, ou o arquivo que cria a session.criteria, pode ser que ela esteja se perdendo no caminho.

3º verifica o path="var/www/qualidade"


vê se o caminho esta OK.

A Forma que vc usa para efetuar e busca é legal, não que fique mais lento , mas vc já tentou fazer um teste por um método mais direto?

Liga o Debug e vê quais as variáveis criadas.


Abraços
0

#3 User is offline   Fichado 

  • Group: Membros
  • Posts: 27
  • Joined: 15-August 06

Posted 21 November 2006 - 09:30 AM

Fala ae Dsouza, fmz velho?
Desculpe-me a demora para retornar...

Uso mySQL aqui, mas eu já descobri o que estava errado.
Eu não rodei a página com o CFindex no servidor, e ae se não havia dados indexados para a pesquisa, logicamente que a pesquisa não iria retornar um valor... ehhehe
+ agora aparentemente está tudo certo.

De qualquer forma foi bom eu ter postado, para que fique registrado caso alguém queira fazer um sistema de busca usando verity. =)

Valeu pela força véio!!

Abs
0

#4 User is offline   Fichado 

  • Group: Membros
  • Posts: 27
  • Joined: 15-August 06

Posted 21 November 2006 - 10:48 AM

Bom, agora vem outra dúvida.

O cliente quer que esta busca seja feita por palavras contidas dentro dos arquivos e existem vários tipos de arquivos (.doc; .txt; .ppt; .pdf, etc etc etc) no servidor.

É possível se fazer isso?

Obrigado pela atenção!!
0

#5 User is offline   pcsilva 

  • Group: Moderadores
  • Posts: 1940
  • Joined: 23-January 05

Posted 21 November 2006 - 11:53 AM

ColdFusion
<cfindex collection="nome_da_colecao" action="refresh" extensions=".doc; .txt; .ppt; .pdf" ....>

0

#6 User is offline   Fichado 

  • Group: Membros
  • Posts: 27
  • Joined: 15-August 06

Posted 21 November 2006 - 02:11 PM

Ahh blz!! =)

Mas como eu faço agora para retornar os dados na página "teste_busca_arquivo.cfm"?

Creio que deverei mudar o valor do "returnVariable" do cfinvoke, pois antes eu estava retornando os dados da query (q_GetResults) (como foi postado).
+ se for isso mesmo, que valor devo colocar?...
Pq eu terei de trazer o resultado, mas com os dados dos campo da tabela "arquivos" (arquivos.arquivo, arquivos.titulo, arquivos.usuario e arquivos.tipo)!!
Ishhh..... agora to confuso. blink.gif

Desde já, muito obrigado!!
0

#7 User is offline   Fichado 

  • Group: Membros
  • Posts: 27
  • Joined: 15-August 06

Posted 21 November 2006 - 02:57 PM

Na index_arquivos.cfm alterei o código assim:

ColdFusion
<CFQUERY NAME="q_GetResults" DATASOURCE="#application.DSN#">
SELECT arquivos.arquivo, arquivos.usuario, arquivos.tipo, arquivos.titulo
FROM arquivos
WHERE arquivos.status = 'publicado'
ORDER BY arquivos.arquivo DESC
</CFQUERY>


<CFLOCK TYPE="EXCLUSIVE" TIMEOUT="30">

<CFINDEX
action="refresh"
COLLECTION="collection_mogit"
Extensions=".doc; .txt; .ppt; .pdf"
KEY="arquivo"
TYPE="CUSTOM"
TITLE="arquivo"
QUERY="q_GetResults"
BODY="arquivo, usuario, tipo " custom1="usuario" custom2="tipo" >

</CFLOCK>


Mas não é assim, pois oq eu quero, é que ele busque pelo parametro digitado pelo usuário dentro dos arquivos no servidor, mas que ele mostre o resultado na tela no formato => #q_GetResults.arquivo#, #q_GetResults.usuario#, #q_GetResults.tipo#, #q_GetResults.titulo#".
Só que dessa maneira, ele não está pesquisando pela palavra digitada dentro dos arquivos no servidor, e sim buscando nestes campos da query (q_GetResults.arquivo, q_GetResults.usuario, q_GetResults.tipo, q_GetResults.titulo).

Oq devo fazer? huh.gif
0

#8 User is offline   pcsilva 

  • Group: Moderadores
  • Posts: 1940
  • Joined: 23-January 05

Posted 21 November 2006 - 03:08 PM

Esta ok, basta terminar o script, veja no final da descricao da tag tem um exemplo, olha ai.
http://livedocs.macromedia.com/coldfusion/...s90.htm#1103106
0

#9 User is offline   Fichado 

  • Group: Membros
  • Posts: 27
  • Joined: 15-August 06

Posted 22 November 2006 - 09:27 AM

Muito estranho, ele continua buscando nos campos da query, e não dentro dos .doc do servidor.

Olha só:

index_arquivos.cfm:
ColdFusion
<CFQUERY NAME="GetResults" DATASOURCE="#application.DSN#">
SELECT arquivos.arquivo, arquivos.usuario, arquivos.tipo, arquivos.titulo
FROM arquivos
WHERE arquivos.status = 'publicado'
ORDER BY arquivos.arquivo DESC
</CFQUERY>


<CFLOCK TYPE="EXCLUSIVE" TIMEOUT="30">
<CFINDEX
action="update"
COLLECTION="collection"
Extensions=".doc; .txt; .ppt; .pdf"
KEY="arquivo"
TYPE="PATH"
Urlpath="#url#"
TITLE="arquivo"
QUERY="GetResults"
recurse="Yes"
BODY="arquivo, usuario, tipo " custom1="usuario" custom2="tipo" >

</CFLOCK>


consulta_arquivos.cfc:
ColdFusion
<cfcomponent displayname="pesquisa arquivo">
<cffunction name="lista_arquivo" output="0" returntype="query">
<cfargument name="criteria" type="string" required="true"/>
<CFSEARCH
COLLECTION="collection"
NAME="GetResults"
CRITERIA="#LCase(criteria)#">


<cfreturn GetResults>
</cffunction>
</cfcomponent>


teste_busca_arquivo.cfm:
ColdFusion
<cfinclude template="header.cfm">

<cfprocessingdirective pageEncoding="ISO-8859-1">

<cfif not isDefined ("b_Search")>
<table width="100%" align="center">

<form method="post" action="teste_busca_arquivo.cfm" >
<tr align="center" valign="top">
<td align="right"><b>Critérios: </b></td>
<td align="left">
<cfif not isdefined ("form.criteria")>
<input name="criteria" type="Text" id="criteria" tabindex="1" size="50" maxlength="50">
<cfelse>
<cfoutput>
<input name="criteria" type="Text" id="criteria" tabindex="1" value="#form.criteria#" size="50" maxlength="50">
</cfoutput>
</cfif>

<input type="submit" name="b_Search" value=" << Buscar >>" onclick="Valida(this.form)">
</td>
</tr>

</form>
</table>

<cfelse>

<!--- <cfparam name="form.criteria" default=""> --->

<cfinvoke
method="lista_arquivo"
component="consulta_arquivos"
returnVariable="GetResults"
>
<CFIF (not isDefined("session.criteria")) >
<cfinvokeargument name="criteria" value="#form.criteria#">
<cfelse>
<cfinvokeargument name="criteria" value="#session.criteria#">
</CFIF>
</cfinvoke>

<!--- <cfoutput>
#form.criteria#<br><br>
R:#GetResults.RecordCount#<br><br>
URL:#GetResults.url#<br><br>
KEY:#GetResults.key#<br><br>
Titlt:#GetResults.title#<br><br>
score:#GetResults.score#<br><br>
custom1:#GetResults.custom1#<br><br>
custom2:#GetResults.custom2#<br><br>
summary:#GetResults.summary#<br><br>
<!---#GetResults.currentrow#<br><br>
#GetResults.columnlist#<br><br>
#GetResults.recordssearched#<br> --->
</cfoutput>
<cfabort> --->

<table width="100%" align="center">
<tr>
<td height="100">
<table width="100%" height="70" border="0" align="center" cellpadding="0" cellspacing="0" >
<tr>
<CFOUTPUT>
<td height="16" align="center" nowrap colspan="5">Total de #GetResults.RecordCount# registros encontrados.</td>
</CFOUTPUT>
</tr>
<tr>
<td height="200" align="center" valign="top">
<cfif #GetResults.recordcount# neq 0>
<!--- <cfparam name="attributes.maxrows" default="15" type="numeric">
<cfparam name="attributes.thispage" default="1" type="numeric">
<cfparam name="attributes.groupsof" default="10" type="numeric">
<cf_paginacao_1 q_name="#getresults#" maxrows="15" thispage="#attributes.thispage#" groupsof="#attributes.groupsof#" > --->
<table width="100%" >
<tr>
<th >ID</th>
<th >Título</th>
<th >Usuário que cadastrou</th>
<th >Tipo de arquivo</th>
</tr>
<cfoutput query="GetResults"><!--- maxrows="15" startrow="#startrow#" --->
<tr>
<td>#key#</td>
<td><a href="./ver_documento.cfm?arquivo=#key#" title="Ver Documento">#Title#</a></td>
<td>#Custom1#</td>
<td>#Custom2#</td>
</tr>
</cfoutput>
</table><!--- <hr width="85%" style="color:#006699;"> --->
</td>
</cfif>
</tr>
</table>
</td>
</tr>
</table>

</cfif>

<cfinclude template="footer.cfm">



Está tudo ok, não está?

Cara, vc está me ajudando muito, valeu mesmo!! smile.gif

0

#10 User is offline   pcsilva 

  • Group: Moderadores
  • Posts: 1940
  • Joined: 23-January 05

Posted 22 November 2006 - 11:36 AM

index_arquivos.cfm:
ColdFusion

<CFLOCK TYPE="EXCLUSIVE" TIMEOUT="30">
<CFINDEX
action="update"
COLLECTION="collection"
Extensions=".doc; .txt; .ppt; .pdf"
KEY="arquivo"
TYPE="PATH"
Urlpath="#url#"
TITLE="arquivo"
recurse="Yes">

</CFLOCK>


0

#11 User is offline   Fichado 

  • Group: Membros
  • Posts: 27
  • Joined: 15-August 06

Posted 22 November 2006 - 12:19 PM

Fala Pedrão!

Continuou do mesmo jeito. =\

Vc teria por ae, algum sisteminha de busca simples usando o CFindex e o CFsearch para eu dar uma olhada e fazer alguns testes por aqui?

Não sei mais o que fazer. Já me esgotaram as possibilidades! =\

Valeu!!
0

#12 User is offline   pcsilva 

  • Group: Moderadores
  • Posts: 1940
  • Joined: 23-January 05

Posted 22 November 2006 - 01:24 PM

ColdFusion
<cfset f = GetFileFromPath(GetTemplatePath()) >
<cfset p = Replace(CGI.PATH_TRANSLATED,"\#f#","","one") >
<cfset u = "http://#CGI.SERVER_NAME#:#CGI.SERVER_PORT##replace(listgetat(CGI.SCRIPT_NAME,1,'?'),'/#f#','','one')#" >
<cftry>
<cfcollection action="create" collection="mycollection" path="#p#">
<cfcatch type="coldfusion.tagext.search.Utils$CollectionExistsException"></cfcatch>
</cftry>
<cfindex action="update" collection="mycollection" key="#p#" type="path" title="Teste" URLpath="#u#" extensions=".cfc,.cfm" recurse="Yes">
<cfsearch name="query" collection="mycollection" type="simple" criteria="cfset">
<cfdump var="#query#">

0

#13 User is offline   Fichado 

  • Group: Membros
  • Posts: 27
  • Joined: 15-August 06

Posted 22 November 2006 - 02:22 PM

Orra, legal esse seu exemplo! =)

Agora vamos a luta para fazer os testes.

De cara já está dando erro para se criar a collection. Não sei pq, pois ontem eu estava tentando criar uma collection com um path la e não estava criando e dava o mesmo erro que está dando para criar com o seu exemplo.
Ae hj, a 1a coisa que fiz foi tentar criar a mesma collection com o mesmo path e ae criou normalmente...
Bom, ae já está envolvendo problema no servidor e talz...

Enfim, agradeço muito pela força Pedro.

Quando eu finalizar isso aqui, eu volto a postar dizendo qual é era o problema. =)
0

#14 User is offline   Fichado 

  • Group: Membros
  • Posts: 27
  • Joined: 15-August 06

Posted 23 November 2006 - 02:58 PM

Opa!

Fiz uns testes locais aqui, e realmente o problema está no caminho do servidor daqui do trampo, porque localmente está funcionando tudo perfeito.

Agora a questão é.
O que vcs me indicam com relação ao CFindex?... O que é mais viável, roda-lo de 1 em 1 hora, roda-lo de 12 em 12 horas, ou não faz diferença?

Digo isso pq vários documento são incluidos no sistema diariamente e precisaria q a index fosse rodada de tempos em tempos...
Roda-lo em intervalos de tempos curtos, pode dar algum problema?

Ah!, e em que local do CFAministrator eu configuro para se rodar um determinado arquivo de tempos em tempos?

Valeu!! smile.gif
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic


Similar Topics Collapse

  Topic Forum Started By Stats Last Post Info
New Replies Alguem conhece um excelente Sistema de Newsletter?
Alguem conhece um excelente Sistema de N
ASP pedrovisk 
  • 2 Replies
  • 1016 Views
New Replies Retroceder animação
Como fazer retornar a um quadro específico, retrocedendo a animação???
Flash & ActionScript Gramdi 
  • 6 Replies
  • 1848 Views
New Replies Usuarios on-line
Como fazer no flash?
Flash & ActionScript tiagoborges.net 
  • 1 Reply
  • 847 Views
Hot Topic (New) Como fazer um menu drop down utilizando layers???? Dreamweaver paulofbc 
  • 21 Replies
  • 2902 Views
New Replies 14º Desafio - Site com um Player de FLV
Conheça as regras e postem suas Dúvidas
Desafio Natan 
  • 6 Replies
  • 5062 Views
New Replies Como preparar arquivo para SILK-SCREEN?
Empresas que fazem letreiros exigem CorelDraw!
Processos Gráficos Herweg 
  • 1 Reply
  • 1710 Views
New Replies Disney nomeia vice presidente do Facebook como conselheira Notícias Notícias 
  • 0 Replies
  • 265 Views
New Replies Não ajusta no "top", PQ?
layouteio, ajusto e navego com bug!
Dreamweaver LiuAne 
  • 5 Replies
  • 852 Views

Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)