Package org.alfresco.solr
Class AlfrescoSolrDataModel
- java.lang.Object
-
- org.alfresco.solr.AlfrescoSolrDataModel
-
- All Implemented Interfaces:
org.alfresco.repo.search.adaptor.lucene.QueryConstants
public class AlfrescoSolrDataModel extends Object implements org.alfresco.repo.search.adaptor.lucene.QueryConstants
- Author:
- Andy
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classAlfrescoSolrDataModel.ContentFieldTypestatic classAlfrescoSolrDataModel.FieldInstancestatic classAlfrescoSolrDataModel.FieldUsestatic classAlfrescoSolrDataModel.IndexedFieldstatic classAlfrescoSolrDataModel.TenantAclIdDbId
-
Field Summary
Fields Modifier and Type Field Description static StringCONTENT_M_LOCALE_PREFIXstatic StringCONTENT_S_LOCALE_PREFIXstatic StringDEFAULT_TENANTprotected static org.slf4j.Loggerlog-
Fields inherited from interface org.alfresco.repo.search.adaptor.lucene.QueryConstants
FIELD_ACLID, FIELD_ACLTXCOMMITTIME, FIELD_ACLTXID, FIELD_ALL, FIELD_ANAME, FIELD_ANCESTOR, FIELD_APATH, FIELD_ASPECT, FIELD_ASSOCTYPEQNAME, FIELD_AUTHORITY, FIELD_AUTHORITYSET, FIELD_CASCADE_FLAG, FIELD_CASCADETX, FIELD_CLASS, FIELD_CONTENT_DOC_ID_SUFFIX, FIELD_DBID, FIELD_DENIED, FIELD_DENYSET, FIELD_DOC_TYPE, FIELD_ENCODING_SUFFIX, FIELD_EXACTASPECT, FIELD_EXACTTYPE, FIELD_EXCEPTION_MESSAGE, FIELD_EXCEPTION_STACK, FIELD_EXISTS, FIELD_FIELDS, FIELD_FINGERPRINT, FIELD_FTSREF, FIELD_FTSSTATUS, FIELD_GEO, FIELD_ID, FIELD_INACLTXID, FIELD_INTXID, FIELD_ISCATEGORY, FIELD_ISCONTAINER, FIELD_ISNODE, FIELD_ISNOTNULL, FIELD_ISNULL, FIELD_ISROOT, FIELD_ISUNSET, FIELD_LID, FIELD_LINKASPECT, FIELD_LOCALE_SUFFIX, FIELD_MIMETYPE_SUFFIX, FIELD_NO_LOCALE_SUFFIX, FIELD_NPATH, FIELD_NULLPROPERTIES, FIELD_OWNER, FIELD_OWNERSET, FIELD_PARENT, FIELD_PARENT_ASSOC_CRC, FIELD_PATH, FIELD_PATHWITHREPEATS, FIELD_PNAME, FIELD_PRIMARYASSOCQNAME, FIELD_PRIMARYASSOCTYPEQNAME, FIELD_PRIMARYPARENT, FIELD_PROPERTIES, FIELD_QNAME, FIELD_READER, FIELD_READERSET, FIELD_S_ACLTXCOMMITTIME, FIELD_S_ACLTXID, FIELD_S_INACLTXID, FIELD_S_INTXID, FIELD_S_TXCOMMITTIME, FIELD_S_TXID, FIELD_SITE, FIELD_SIZE_SUFFIX, FIELD_SOLR_LOCALISED_UNTOKENISED_SUFFIX, FIELD_SOLR_NOLOCALE_TOKENISED_SUFFIX, FIELD_SOLR_NOLOCALE_UNTOKENISED_SUFFIX, FIELD_SOLR_UNIT_OF_TIME_DAY_OF_WEEK_SUFFIX, FIELD_SOLR_UNIT_OF_TIME_DAY_OF_YEAR_SUFFIX, FIELD_SOLR_UNIT_OF_TIME_DAY_SUFFIX, FIELD_SOLR_UNIT_OF_TIME_HOUR_SUFFIX, FIELD_SOLR_UNIT_OF_TIME_MINUTE_SUFFIX, FIELD_SOLR_UNIT_OF_TIME_MONTH_SUFFIX, FIELD_SOLR_UNIT_OF_TIME_QUARTER_SUFFIX, FIELD_SOLR_UNIT_OF_TIME_SECOND_SUFFIX, FIELD_SOLR_UNIT_OF_TIME_YEAR_SUFFIX, FIELD_SOLR4_ID, FIELD_SORT_SUFFIX, FIELD_TAG, FIELD_TAG_SUGGEST, FIELD_TENANT, FIELD_TEXT, FIELD_TRANSFORMATION_EXCEPTION_SUFFIX, FIELD_TRANSFORMATION_STATUS_SUFFIX, FIELD_TRANSFORMATION_TIME_SUFFIX, FIELD_TX, FIELD_TXCOMMITTIME, FIELD_TXID, FIELD_TYPE, FIELD_VERSION, PROPERTY_FIELD_PREFIX
-
-
Constructor Summary
Constructors Constructor Description AlfrescoSolrDataModel()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidafterInitModels()voidclose()static AlfrescoSolrDataModel.TenantAclIdDbIddecodeNodeDocumentId(String id)Destructures a document identifier in the three compounding parts (tenant, aclid and dbid).static StringgetAclChangeSetDocumentId(Long aclChangeSetId)Returns the ACL ChangeSet Document identifier in the following format TRACKER!CHANGESET!<ACL_CHANGESET_ID>static StringgetAclDocumentId(String tenant, Long aclId)Returns the ACL Document identifier in the following format <TENANT>!<ACLID>!ACLList<org.alfresco.solr.client.AlfrescoModel>getAlfrescoModels()Returns the Alfresco models associated with the current dictionary.StringgetAlfrescoPropertyFromSchemaField(String schemaField)org.alfresco.opencmis.dictionary.CMISDictionaryServicegetCMISDictionary(String alternativeDictionary, org.apache.chemistry.opencmis.commons.enums.CmisVersion cmisVersion)Gets the CMISDictionaryService, if an Alternative dictionary is specified it tries to get that.org.alfresco.opencmis.search.CmisFunctionEvaluationContextgetCMISFunctionEvaluationContext(org.alfresco.opencmis.search.CMISQueryOptions.CMISQueryMode mode, org.apache.chemistry.opencmis.commons.enums.CmisVersion cmisVersion, String alternativeDictionary)org.apache.lucene.search.QuerygetCMISQuery(org.alfresco.opencmis.search.CMISQueryOptions.CMISQueryMode mode, org.alfresco.util.Pair<org.alfresco.service.cmr.search.SearchParameters,Boolean> searchParametersAndFilter, org.apache.solr.request.SolrQueryRequest req, org.alfresco.repo.search.impl.querymodel.Query queryModelQuery, org.apache.chemistry.opencmis.commons.enums.CmisVersion cmisVersion, String alternativeDictionary)static PropertiesgetCommonConfig()org.alfresco.repo.dictionary.DictionaryComponentgetDictionaryService(String alternativeDictionary)Gets a DictionaryService, if an Alternative dictionary is specified it tries to get that.StringgetFieldForNonText(org.alfresco.service.cmr.dictionary.PropertyDefinition propertyDefinition)org.apache.lucene.search.QuerygetFTSQuery(org.alfresco.util.Pair<org.alfresco.service.cmr.search.SearchParameters,Boolean> searchParametersAndFilter, org.apache.solr.request.SolrQueryRequest req, org.alfresco.repo.search.impl.parsers.FTSQueryParser.RerankPhase rerankPhase)AlfrescoSolrDataModel.IndexedFieldgetIndexedFieldForContentPropertyMetadata(org.alfresco.service.namespace.QName propertyQName, AlfrescoSolrDataModel.ContentFieldType type)AlfrescoSolrDataModel.IndexedFieldgetIndexedFieldNamesForProperty(org.alfresco.service.namespace.QName propertyQName)Get all the field names into which we must copy the source datastatic AlfrescoSolrDataModelgetInstance()org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext<org.apache.lucene.search.Query,org.apache.lucene.search.Sort,org.apache.lucene.queryparser.classic.ParseException>getLuceneQueryBuilderContext(org.alfresco.service.cmr.search.SearchParameters searchParameters, org.apache.solr.request.SolrQueryRequest req, String alternativeDictionary, org.alfresco.repo.search.impl.parsers.FTSQueryParser.RerankPhase rerankPhase)Solr4QueryParsergetLuceneQueryParser(org.alfresco.service.cmr.search.SearchParameters searchParameters, org.apache.solr.request.SolrQueryRequest req, org.alfresco.repo.search.impl.parsers.FTSQueryParser.RerankPhase rerankPhase)org.alfresco.repo.dictionary.NamespaceDAOgetNamespaceDAO()static StringgetNodeDocumentId(String tenant, Long aclId, Long dbid)Returns the Solr document identifier in the following format <TENANT>!<ACLID>!<DBID>org.alfresco.service.cmr.dictionary.PropertyDefinitiongetPropertyDefinition(org.alfresco.service.namespace.QName propertyQName)AlfrescoSolrDataModel.IndexedFieldgetQueryableFields(org.alfresco.service.namespace.QName propertyQName, AlfrescoSolrDataModel.ContentFieldType type, AlfrescoSolrDataModel.FieldUse fieldUse)ClassLoadergetResourceClassLoader()static FilegetResourceDirectory()static StringgetTenantId(String tenant)AlfrescoSolrDataModel.ContentFieldTypegetTextField(String ending)static StringgetTransactionDocumentId(Long txId)Returns the Transaction Document identifier in the following format TRACKER!TX!<TX_ID>StringmapNonPropertyFields(String queryField)StringmapProperty(String potentialProperty, AlfrescoSolrDataModel.FieldUse fieldUse, org.apache.solr.request.SolrQueryRequest req)StringmapProperty(String potentialProperty, AlfrescoSolrDataModel.FieldUse fieldUse, org.apache.solr.request.SolrQueryRequest req, int position)static LongparseAclChangeSetId(String documentId)Extracts the ACL changeset identifier from the input document identifier.org.alfresco.repo.search.impl.querymodel.QueryparseCMISQueryToAlfrescoAbstractQuery(org.alfresco.opencmis.search.CMISQueryOptions.CMISQueryMode mode, org.alfresco.service.cmr.search.SearchParameters searchParameters, org.apache.solr.request.SolrQueryRequest req, String alternativeDictionary, org.apache.chemistry.opencmis.commons.enums.CmisVersion cmisVersion)static LongparseTransactionId(String documentId)Extracts the transaction identifier from the input document identifier.booleanputModel(org.alfresco.repo.dictionary.M2Model model)voidremoveModel(org.alfresco.service.namespace.QName modelQName)voidsetCMDefaultUri()
-
-
-
Field Detail
-
CONTENT_S_LOCALE_PREFIX
public static final String CONTENT_S_LOCALE_PREFIX
- See Also:
- Constant Field Values
-
CONTENT_M_LOCALE_PREFIX
public static final String CONTENT_M_LOCALE_PREFIX
- See Also:
- Constant Field Values
-
log
protected static final org.slf4j.Logger log
-
DEFAULT_TENANT
public static final String DEFAULT_TENANT
- See Also:
- Constant Field Values
-
-
Method Detail
-
close
public void close()
-
getAclDocumentId
public static String getAclDocumentId(String tenant, Long aclId)
Returns the ACL Document identifier in the following format <TENANT>!<ACLID>!ACL- Parameters:
tenant- the tenant code.aclId- the acl identifer- Returns:
- the ACL Document identifier (<TENANT>!<ACLID>!ACL)
-
getAclChangeSetDocumentId
public static String getAclChangeSetDocumentId(Long aclChangeSetId)
Returns the ACL ChangeSet Document identifier in the following format TRACKER!CHANGESET!<ACL_CHANGESET_ID>- Parameters:
aclChangeSetId- the ACL changeset identifier.- Returns:
- the ACL ChangeSet Document identifier (TRACKER!CHANGESET!<ACL_CHANGESET_ID>)
-
parseAclChangeSetId
public static Long parseAclChangeSetId(String documentId)
Extracts the ACL changeset identifier from the input document identifier. The "input document identifier" is the alphanumeric identifier used for Solr documents.- Parameters:
documentId- the document identifier.- Returns:
- the numeric ACL changeset identifier.
- See Also:
getAclChangeSetDocumentId(Long)
-
parseTransactionId
public static Long parseTransactionId(String documentId)
Extracts the transaction identifier from the input document identifier. The "input document identifier" is the alphanumeric identifier used for Solr documents.- Parameters:
documentId- the document identifier.- Returns:
- the numeric ACL changeset identifier.
-
getNodeDocumentId
public static String getNodeDocumentId(String tenant, Long aclId, Long dbid)
Returns the Solr document identifier in the following format <TENANT>!<ACLID>!<DBID>- Parameters:
tenant- the tenant code.aclId- the ACL identifier.dbid- the DB identifier.- Returns:
- the Solr document identifier in the following format <TENANT>!<ACLID>!<DBID>
-
decodeNodeDocumentId
public static AlfrescoSolrDataModel.TenantAclIdDbId decodeNodeDocumentId(String id)
Destructures a document identifier in the three compounding parts (tenant, aclid and dbid).- Parameters:
id- the document identifier.- Returns:
- a
AlfrescoSolrDataModel.TenantAclIdDbIdinstance containing the destructured identifier.
-
getTransactionDocumentId
public static String getTransactionDocumentId(Long txId)
Returns the Transaction Document identifier in the following format TRACKER!TX!<TX_ID>- Parameters:
txId- the transaction identifier.- Returns:
- the Transaction Document identifier in the following format TRACKER!TX!<TX_ID>
-
getAlfrescoPropertyFromSchemaField
public String getAlfrescoPropertyFromSchemaField(String schemaField)
-
getInstance
public static AlfrescoSolrDataModel getInstance()
-
getNamespaceDAO
public org.alfresco.repo.dictionary.NamespaceDAO getNamespaceDAO()
-
getCommonConfig
public static Properties getCommonConfig()
-
getResourceClassLoader
public ClassLoader getResourceClassLoader()
- Returns:
- ClassLoader
-
getResourceDirectory
public static File getResourceDirectory()
-
getDictionaryService
public org.alfresco.repo.dictionary.DictionaryComponent getDictionaryService(String alternativeDictionary)
Gets a DictionaryService, if an Alternative dictionary is specified it tries to get that. It will attempt to get the DEFAULT dictionary service if null is specified or it can't find a dictionary with the name of "alternativeDictionary"- Parameters:
alternativeDictionary- - can be null;- Returns:
- DictionaryService
-
getIndexedFieldForContentPropertyMetadata
public AlfrescoSolrDataModel.IndexedField getIndexedFieldForContentPropertyMetadata(org.alfresco.service.namespace.QName propertyQName, AlfrescoSolrDataModel.ContentFieldType type)
-
getQueryableFields
public AlfrescoSolrDataModel.IndexedField getQueryableFields(org.alfresco.service.namespace.QName propertyQName, AlfrescoSolrDataModel.ContentFieldType type, AlfrescoSolrDataModel.FieldUse fieldUse)
-
getIndexedFieldNamesForProperty
public AlfrescoSolrDataModel.IndexedField getIndexedFieldNamesForProperty(org.alfresco.service.namespace.QName propertyQName)
Get all the field names into which we must copy the source data- Parameters:
propertyQName- QName- Returns:
- IndexedField
-
getFieldForNonText
public String getFieldForNonText(org.alfresco.service.cmr.dictionary.PropertyDefinition propertyDefinition)
-
getPropertyDefinition
public org.alfresco.service.cmr.dictionary.PropertyDefinition getPropertyDefinition(org.alfresco.service.namespace.QName propertyQName)
-
putModel
public boolean putModel(org.alfresco.repo.dictionary.M2Model model)
-
removeModel
public void removeModel(org.alfresco.service.namespace.QName modelQName)
-
afterInitModels
public void afterInitModels()
-
parseCMISQueryToAlfrescoAbstractQuery
public org.alfresco.repo.search.impl.querymodel.Query parseCMISQueryToAlfrescoAbstractQuery(org.alfresco.opencmis.search.CMISQueryOptions.CMISQueryMode mode, org.alfresco.service.cmr.search.SearchParameters searchParameters, org.apache.solr.request.SolrQueryRequest req, String alternativeDictionary, org.apache.chemistry.opencmis.commons.enums.CmisVersion cmisVersion)
-
getCMISFunctionEvaluationContext
public org.alfresco.opencmis.search.CmisFunctionEvaluationContext getCMISFunctionEvaluationContext(org.alfresco.opencmis.search.CMISQueryOptions.CMISQueryMode mode, org.apache.chemistry.opencmis.commons.enums.CmisVersion cmisVersion, String alternativeDictionary)
-
getCMISDictionary
public org.alfresco.opencmis.dictionary.CMISDictionaryService getCMISDictionary(String alternativeDictionary, org.apache.chemistry.opencmis.commons.enums.CmisVersion cmisVersion)
Gets the CMISDictionaryService, if an Alternative dictionary is specified it tries to get that. It will attempt to get the DEFAULT dictionary service if null is specified or it can't find a dictionary with the name of "alternativeDictionary"- Parameters:
alternativeDictionary- - can be null;- Returns:
- CMISDictionaryService
-
getAlfrescoModels
public List<org.alfresco.solr.client.AlfrescoModel> getAlfrescoModels()
Returns the Alfresco models associated with the current dictionary.- Returns:
- the Alfresco models associated with the current dictionary.
-
getCMISQuery
public org.apache.lucene.search.Query getCMISQuery(org.alfresco.opencmis.search.CMISQueryOptions.CMISQueryMode mode, org.alfresco.util.Pair<org.alfresco.service.cmr.search.SearchParameters,Boolean> searchParametersAndFilter, org.apache.solr.request.SolrQueryRequest req, org.alfresco.repo.search.impl.querymodel.Query queryModelQuery, org.apache.chemistry.opencmis.commons.enums.CmisVersion cmisVersion, String alternativeDictionary) throws org.apache.lucene.queryparser.classic.ParseException- Throws:
org.apache.lucene.queryparser.classic.ParseException
-
getLuceneQueryBuilderContext
public org.alfresco.repo.search.impl.querymodel.impl.lucene.LuceneQueryBuilderContext<org.apache.lucene.search.Query,org.apache.lucene.search.Sort,org.apache.lucene.queryparser.classic.ParseException> getLuceneQueryBuilderContext(org.alfresco.service.cmr.search.SearchParameters searchParameters, org.apache.solr.request.SolrQueryRequest req, String alternativeDictionary, org.alfresco.repo.search.impl.parsers.FTSQueryParser.RerankPhase rerankPhase)
-
getLuceneQueryParser
public Solr4QueryParser getLuceneQueryParser(org.alfresco.service.cmr.search.SearchParameters searchParameters, org.apache.solr.request.SolrQueryRequest req, org.alfresco.repo.search.impl.parsers.FTSQueryParser.RerankPhase rerankPhase)
-
getFTSQuery
public org.apache.lucene.search.Query getFTSQuery(org.alfresco.util.Pair<org.alfresco.service.cmr.search.SearchParameters,Boolean> searchParametersAndFilter, org.apache.solr.request.SolrQueryRequest req, org.alfresco.repo.search.impl.parsers.FTSQueryParser.RerankPhase rerankPhase) throws org.apache.lucene.queryparser.classic.ParseException
- Throws:
org.apache.lucene.queryparser.classic.ParseException
-
mapProperty
public String mapProperty(String potentialProperty, AlfrescoSolrDataModel.FieldUse fieldUse, org.apache.solr.request.SolrQueryRequest req)
-
mapProperty
public String mapProperty(String potentialProperty, AlfrescoSolrDataModel.FieldUse fieldUse, org.apache.solr.request.SolrQueryRequest req, int position)
-
getTextField
public AlfrescoSolrDataModel.ContentFieldType getTextField(String ending)
- Parameters:
ending- String- Returns:
- ContentFieldType
-
setCMDefaultUri
public void setCMDefaultUri()
-
-