Hi all,
I need search something (full-text) in several workspaces, but i have a
problem. What a best way to perform this? Because i concat the results.
However, the last workspace will be their results in the end of my
collection. Make a sorting by jcr:score could be a good way?
below is my code,
StringBuffer strQuery = new StringBuffer();
strQuery.append("SELECT * FROM nt:base WHERE CONTAINS(.,'"
+ pTextQuery + "') ");
if ((types != null) && (types.size() != 0)) {
strQuery.append(" AND ( ");
for (AssetTypeModel type : types) {
strQuery.append(" (jcr:mimeType='" + type.getMimeType()
+ "') OR ");
}
strQuery.delete(strQuery.length() - 3, strQuery.length());
strQuery.append(" ) ");
}
strQuery.append(" order by jcr:score DESC");
Session session = null;
try {
for (WorkspaceModel workspace : workspaces) {
session = login(pRepository, pCredential, workspace
.getName());
QueryManager queryManager = session.getWorkspace()
.getQueryManager();
Query query = queryManager.createQuery(strQuery.toString
(),
Query.SQL);
QueryResult queryResult = query.execute();
NodeIterator iter = queryResult.getNodes();
while (iter.hasNext()) {
Node element = (Node) iter.next();
AssetModel asset = new AssetModel();
asset.setWorkspace(workspace);
asset.setName(element.getParent().getName());
asset.setPath(element.getParent().getPath());
asset.setSize(calculateSize(element.getProperty(
"jcr:data")));
lReturn.add(asset);
}
}
} catch (Exception e) {
throw new BartEnvironmentException(getClass().getName(),
"findByNodeContentByWorkspaces", e);
} finally {
logoutSession(session);
}
thanks,
--
Alexandre Costa Martins
CESAR - Recife Center for Advanced Studies and Systems
Software Engineer and Software Reuse Researcher
MSc Candidate at Federal University of Pernambuco
RiSE Member - http://www.rise.com.br
E-mail: [EMAIL PROTECTED]
MSN: [EMAIL PROTECTED]
GTalk: [EMAIL PROTECTED]
Skype: xandecmartins
Mobile: +55 (81) 9929-9548
Office: +55 (81) 3425-4763
Fax: +55 (81) 3425-4701