mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Another fix for : ALF-10453 SOLR: Errors in the log while starting Alfresco until search engine is changed to lucene.
- solr result set now has a NodeService wired up to recover properties in the same manner as the lucene version ... git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@31739 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -28,6 +28,7 @@ import org.alfresco.repo.domain.node.NodeDAO;
|
||||
import org.alfresco.repo.search.SimpleResultSetMetaData;
|
||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.cmr.repository.StoreRef;
|
||||
import org.alfresco.service.cmr.search.LimitBy;
|
||||
import org.alfresco.service.cmr.search.PermissionEvaluationMode;
|
||||
@@ -48,6 +49,8 @@ public class SolrJSONResultSet implements ResultSet
|
||||
{
|
||||
private NodeDAO nodeDAO;
|
||||
|
||||
private NodeService nodeService;
|
||||
|
||||
private ArrayList<Pair<Long, Float>> page;
|
||||
|
||||
private ResultSetMetaData rsmd;
|
||||
@@ -70,10 +73,11 @@ public class SolrJSONResultSet implements ResultSet
|
||||
* Detached result set based on that provided
|
||||
* @param resultSet
|
||||
*/
|
||||
public SolrJSONResultSet(JSONObject json, NodeDAO nodeDAO, SearchParameters searchParameters)
|
||||
public SolrJSONResultSet(JSONObject json, NodeDAO nodeDAO, SearchParameters searchParameters, NodeService nodeService)
|
||||
{
|
||||
// Note all properties are returned as multi-valued from the WildcardField "*" definition in the SOLR schema.xml
|
||||
this.nodeDAO = nodeDAO;
|
||||
this.nodeService = nodeService;
|
||||
this.resultSetMetaData = new SimpleResultSetMetaData(LimitBy.UNLIMITED, PermissionEvaluationMode.EAGER, searchParameters);
|
||||
try
|
||||
{
|
||||
@@ -137,6 +141,12 @@ public class SolrJSONResultSet implements ResultSet
|
||||
}
|
||||
|
||||
|
||||
public NodeService getNodeService()
|
||||
{
|
||||
return nodeService;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
* @see org.alfresco.service.cmr.search.ResultSetSPI#close()
|
||||
|
@@ -18,11 +18,13 @@
|
||||
*/
|
||||
package org.alfresco.repo.search.impl.lucene;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.repo.search.AbstractResultSetRow;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.search.ResultSet;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
|
||||
/**
|
||||
* @author Andy
|
||||
@@ -78,5 +80,11 @@ public class SolrJSONResultSetRow extends AbstractResultSetRow
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
protected Map<QName, Serializable> getDirectProperties()
|
||||
{
|
||||
SolrJSONResultSet rs = (SolrJSONResultSet) getResultSet();
|
||||
return rs.getNodeService().getProperties(rs.getNodeRef(getIndex()));
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -30,12 +30,15 @@ import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.httpclient.HttpClientFactory;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.domain.node.NodeDAO;
|
||||
import org.alfresco.repo.search.impl.lucene.LuceneQueryParserException;
|
||||
import org.alfresco.repo.search.impl.lucene.SolrJSONResultSet;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
|
||||
import org.alfresco.service.cmr.search.LimitBy;
|
||||
import org.alfresco.service.cmr.search.ResultSet;
|
||||
import org.alfresco.service.cmr.search.ResultSetRow;
|
||||
import org.alfresco.service.cmr.search.SearchParameters;
|
||||
import org.alfresco.service.cmr.search.SearchParameters.FieldFacet;
|
||||
import org.alfresco.service.cmr.search.SearchParameters.FieldFacetMethod;
|
||||
@@ -69,6 +72,8 @@ public class SolrQueryHTTPClient
|
||||
static Log s_logger = LogFactory.getLog(SolrQueryHTTPClient.class);
|
||||
|
||||
private NodeDAO nodeDAO;
|
||||
|
||||
private NodeService nodeService;
|
||||
|
||||
private PermissionService permissionService;
|
||||
|
||||
@@ -107,6 +112,11 @@ public class SolrQueryHTTPClient
|
||||
this.nodeDAO = nodeDAO;
|
||||
}
|
||||
|
||||
public void setNodeService(NodeService nodeService)
|
||||
{
|
||||
this.nodeService = nodeService;
|
||||
}
|
||||
|
||||
public void setPermissionService(PermissionService permissionService)
|
||||
{
|
||||
this.permissionService = permissionService;
|
||||
@@ -338,14 +348,14 @@ public class SolrQueryHTTPClient
|
||||
Reader reader = new BufferedReader(new InputStreamReader(post.getResponseBodyAsStream()));
|
||||
// TODO - replace with streaming-based solution e.g. SimpleJSON ContentHandler
|
||||
JSONObject json = new JSONObject(new JSONTokener(reader));
|
||||
SolrJSONResultSet results = new SolrJSONResultSet(json, nodeDAO, searchParameters);
|
||||
SolrJSONResultSet results = new SolrJSONResultSet(json, nodeDAO, searchParameters, nodeService);
|
||||
if (s_logger.isDebugEnabled())
|
||||
{
|
||||
s_logger.debug("Sent :" + url);
|
||||
s_logger.debug(" with: " + body.toString());
|
||||
s_logger.debug("Got: " + results.getNumberFound() + " in " + results.getQueryTime() + " ms");
|
||||
}
|
||||
|
||||
|
||||
return results;
|
||||
}
|
||||
finally
|
||||
|
Reference in New Issue
Block a user