Lucene Au secours !

alex1025 Messages postés 104 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 8 décembre 2007 - 31 janv. 2007 à 13:17
cs_bastoun Messages postés 164 Date d'inscription dimanche 1 octobre 2000 Statut Membre Dernière intervention 23 mars 2007 - 28 févr. 2007 à 02:49
Bonjour,

Je suis en train d'essayer depuis quelques jours d installer lucene 2.0 en Coldfusion

Je m 'en sort pas

Quelqu' un a t il deja reussi?

Voici l'erreur que je rencontre:

<hr size="2" width="100%" />





The selected method Keyword was not found.
Either there are no methods with the specified method name and argument types, or the method Keyword is overloaded with arguments types that ColdFusion can't decipher reliably. If this is a Java object and you verified that the method exists, you may need to use the javacast function to reduce ambiguity.
 
The error occurred in D:\*********\lucene\indexing_database2.cfm: line 29

 
29 :   <cfset d.add(fld.Keyword("url", urlpath))>
30 :   <cfset d.add(fld.Text("title", title))>
31 :   <cfset d.add(fld.UnIndexed("summary", content))>

<hr size="2" width="100%" />

Voici mon code CFM:
<hr size="2" width="100%" />

<cfset an = CreateObject("java", "org.apache.lucene.analysis.StopAnalyzer")>
<cfset an.init()>
<cfset writer = CreateObject("java", "org.apache.lucene.index.IndexWriter")>
<cfset writer.init("D:\********\lucene\index", an, "true")>
<cfquery name="contentIndex" datasource="*******">
select id_article,author description
FROM test
</cfquery>

<cfloop query="contentIndex">
  <cfset d = CreateObject("java", "org.apache.lucene.document.Document")>
  <cfset fld = CreateObject("java", "org.apache.lucene.document.Field")>
  <cfset content = contentIndex.description>
  <cfset title = contentIndex.id_article>
  <cfset urlpath = "/products/detail.cfm?id=" & contentIndex.id_article>
 
  <cfset d.add(fld.Keyword("url", urlpath))>
  <cfset d.add(fld.Text("title", title))>
  <cfset d.add(fld.UnIndexed("summary", content))>
  <cfset d.add(fld.UnStored("body", content))>
 
  <cfset writer.addDocument(doc)>
</cfloop> 
<cfset writer.close()>

<hr size="2" width="100%" />

l'erreur vient car ce code marche pour l ancienne version de lucene mais pour la 2.0 non....
j arrive pas a la corriger.

Merci d'avance car Lucene a l'air tres bien.

Alex

4 réponses

nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
1 févr. 2007 à 22:28
Bonjour,

Il me semble avoir déjà vu ce cas de figure sur la toile et cela disait de déplacer la création de l'objet field en dehors de la boucle mais je suis pas plus sûre que ça !

<cfset fld = CreateObject("java", "org.apache.lucene.document.Field")>
<cfloop query="contentIndex">
  <cfset d = CreateObject("java", "org.apache.lucene.document.Document")>
    <cfset content = contentIndex.description>
  <cfset title = contentIndex.id_article>
  <cfset urlpath = "/products/detail.cfm?id=" & contentIndex.id_article>
 
  <cfset d.add(fld.Keyword("url", urlpath))>
  <cfset d.add(fld.Text("title", title))>
  <cfset d.add(fld.UnIndexed("summary", content))>
  <cfset d.add(fld.UnStored("body", content))>
 
  <cfset writer.addDocument(doc)>
</cfloop>  

Tu fais : <cfset writer.addDocument(doc)>
Je ne vois nulle part dans ton code la création de l'instance doc
Ne faudrait-il pas écrire : <cfset writer.addDocument(d)>

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
0
nickadele Messages postés 1251 Date d'inscription mercredi 7 août 2002 Statut Modérateur Dernière intervention 10 avril 2013
1 févr. 2007 à 22:30
Tu pourras peut-être avoir plus d'infos ici : http://www.cflucene.org

Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
0
alex1025 Messages postés 104 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 8 décembre 2007
2 févr. 2007 à 10:53
Coucou

Merci pour ta reponse mais en fait le probleme se situe sur

<cfset d.add(fld.Keyword("url", urlpath))>

il semble que keyword ne s utilise plus comme ca

j ai parcouru tous les forums du monde, les groups, les docs mais la je seche total.
sniffff
0
cs_bastoun Messages postés 164 Date d'inscription dimanche 1 octobre 2000 Statut Membre Dernière intervention 23 mars 2007 1
28 févr. 2007 à 02:49
Hello,
Bon j'arrive un peu après la bataille, mais sait-on jamais...
pour l'aide, il faut utiliser la doc de l'API lucene (que tu trouves sur lucene.apache.org)

voilà ce que ça peut donner (pour lucene 2.1)

<cfset an = CreateObject("java", "org.apache.lucene.analysis.standard.StandardAnalyzer")>
<cfset an.init()>

<cfset writer = CreateObject("java", "org.apache.lucene.index.IndexWriter")>
<cfset writer.init("C:\mycflucene\index", an, "true")>
<cfdirectory action "list" directory "C:\mesdocs" name = "contentIndex" recurse="no">

<cfset store = CreateObject("java", "org.apache.lucene.document.Field$Store")>
<cfset index = CreateObject("java", "org.apache.lucene.document.Field$Index")>

<cfoutput query="contentIndex" maxrows="5">
  <cfset d = CreateObject("java", "org.apache.lucene.document.Document")>
 
 
  <cffile action="read" file="#contentIndex.directory#\#contentIndex.name#" variable="myfile">

  <cfset content = myfile>
  <cfset title = contentIndex.name>
  <cfset urlpath = "detail.cfm?id=#contentIndex.name#">

  <cfset fld1 = CreateObject("java", "org.apache.lucene.document.Field")>
  <cfset d.add(fld1.init("url", "#urlpath#", store.YES, index.NO_NORMS))>
 
  <cfset fld2 = CreateObject("java", "org.apache.lucene.document.Field")>
  <cfset d.add(fld2.init("body", "#content#", store.NO, index.TOKENIZED))>

  <cfset writer.addDocument(d)>
</cfoutput>
<cfset writer.close()>
0
Rejoignez-nous