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
A voir également:

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