Fulltext search in jackrabbit - Ricerca fulltext in jackrabbit

  • warning: Illegal string offset 'data' in /membri2/unaviolarosa/includes/tablesort.inc on line 110.
  • warning: Illegal string offset 'data' in /membri2/unaviolarosa/includes/tablesort.inc on line 110.
  • : preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /membri2/unaviolarosa/includes/unicode.inc on line 311.


La JSR-170 definisce una serie di API adatte alla risoluzione delle problematiche quali versionamento e l'indicizzazione dei contenuti per ricerche full-text.
Apache Jackrabbit costiuisce una implementazione di tale specifica.

Di seguito, in particolare, descrivo come effettuare la ricerca fulltext.

Occorre modificare il file workspace.xml ed inserire i diversi extracor, consigliabile inserirli tutti

param name="textFilterClasses" value= "org.apache.jackrabbit.extractor.PdfTextExtractor,
org.apache.jackrabbit.extractor.OpenOfficeTextExtractor,
org.apache.jackrabbit.extractor.RTFTextExtractor"

Dopo aver caricato il file, che si intende indicizzare, nel repository:


File nameFile = new File("/home/rosalba/Scrivania/fileodt.odt");

try {

String mimeType = getMimetype(nameFile);
Node root = session.getRootNode();
Calendar lastModified = Calendar.getInstance();
lastModified.setTimeInMillis( nameFile.lastModified() );
Node fileNode = session.getRootNode().addNode("myfile", "nt:file");
Node resNode = fileNode.addNode("jcr:content", "nt:resource");
resNode.setProperty("jcr:mimeType", mimeType);
resNode.setProperty("jcr:lastModified", lastModified);
resNode.setProperty("jcr:encoding", "");
resNode.setProperty("jcr:data", new FileInputStream(nameFile));
session.save();

Ecco la ricerca:

Node root = session.getRootNode();
wrk = session.getWorkspace();
//dump(root);

try {
QueryManager qm = wrk.getQueryManager();
Query q = qm.createQuery("//*[jcr:contains(.,'testoDaCercare')] ", Query.XPATH);

QueryResult res = q.execute();
NodeIterator it = res.getNodes();

if (!it.hasNext())
System.out.println("No records found...");
while (it.hasNext()) {

Node n = it.nextNode();
dump(n);
}
} catch (InvalidQueryException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RepositoryException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

Attenzione al log, potrebbe essere necessario caricare le librerie:
FontBox.jar e PDFBox-0.7.3.jar

Ma la cosa più interessante è l'allegato, contenente l'intero codice! ;-)

AllegatoDimensione
search_fulltext.tar.gz337.11 KB

Commenti

Caricare esempio Jackrabbit

Salve, sto avendo un problema con il codice sorgente, non riesco a caricare sulla mia versione di jackrabbit quest'esempio. Posso avere un aiuto ? Grazie

Caricare esempio Jackrabbit

Salve, sto avendo un problema con il codice sorgente, non riesco a caricare sulla mia versione di jackrabbit quest'esempio. Posso avere un aiuto ? Grazie