Class AlfrescoSolrDataModel

  • All Implemented Interfaces:
    org.alfresco.repo.search.adaptor.lucene.QueryConstants

    public class AlfrescoSolrDataModel
    extends java.lang.Object
    implements org.alfresco.repo.search.adaptor.lucene.QueryConstants
    Author:
    Andy
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String CONTENT_M_LOCALE_PREFIX  
      static java.lang.String CONTENT_S_LOCALE_PREFIX  
      static java.lang.String DEFAULT_TENANT  
      protected static org.slf4j.Logger log  
      • 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
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void afterInitModels()  
      void close()  
      static AlfrescoSolrDataModel.TenantAclIdDbId decodeNodeDocumentId​(java.lang.String id)
      Destructures a document identifier in the three compounding parts (tenant, aclid and dbid).
      static java.lang.String getAclChangeSetDocumentId​(java.lang.Long aclChangeSetId)
      Returns the ACL ChangeSet Document identifier in the following format TRACKER!CHANGESET!<ACL_CHANGESET_ID>
      static java.lang.String getAclDocumentId​(java.lang.String tenant, java.lang.Long aclId)
      Returns the ACL Document identifier in the following format <TENANT>!<ACLID>!ACL
      java.util.List<org.alfresco.solr.client.AlfrescoModel> getAlfrescoModels()
      Returns the Alfresco models associated with the current dictionary.
      java.lang.String getAlfrescoPropertyFromSchemaField​(java.lang.String schemaField)  
      org.alfresco.opencmis.dictionary.CMISDictionaryService getCMISDictionary​(java.lang.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.CmisFunctionEvaluationContext getCMISFunctionEvaluationContext​(org.alfresco.opencmis.search.CMISQueryOptions.CMISQueryMode mode, org.apache.chemistry.opencmis.commons.enums.CmisVersion cmisVersion, java.lang.String alternativeDictionary)  
      org.apache.lucene.search.Query getCMISQuery​(org.alfresco.opencmis.search.CMISQueryOptions.CMISQueryMode mode, org.alfresco.util.Pair<org.alfresco.service.cmr.search.SearchParameters,​java.lang.Boolean> searchParametersAndFilter, org.apache.solr.request.SolrQueryRequest req, org.alfresco.repo.search.impl.querymodel.Query queryModelQuery, org.apache.chemistry.opencmis.commons.enums.CmisVersion cmisVersion, java.lang.String alternativeDictionary)  
      static java.util.Properties getCommonConfig()  
      org.alfresco.repo.dictionary.DictionaryComponent getDictionaryService​(java.lang.String alternativeDictionary)
      Gets a DictionaryService, if an Alternative dictionary is specified it tries to get that.
      java.lang.String getFieldForNonText​(org.alfresco.service.cmr.dictionary.PropertyDefinition propertyDefinition)  
      org.apache.lucene.search.Query getFTSQuery​(org.alfresco.util.Pair<org.alfresco.service.cmr.search.SearchParameters,​java.lang.Boolean> searchParametersAndFilter, org.apache.solr.request.SolrQueryRequest req, org.alfresco.repo.search.impl.parsers.FTSQueryParser.RerankPhase rerankPhase)  
      AlfrescoSolrDataModel.IndexedField getIndexedFieldForContentPropertyMetadata​(org.alfresco.service.namespace.QName propertyQName, AlfrescoSolrDataModel.ContentFieldType type)  
      AlfrescoSolrDataModel.IndexedField getIndexedFieldNamesForProperty​(org.alfresco.service.namespace.QName propertyQName)
      Get all the field names into which we must copy the source data
      static AlfrescoSolrDataModel getInstance()  
      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, java.lang.String alternativeDictionary, org.alfresco.repo.search.impl.parsers.FTSQueryParser.RerankPhase rerankPhase)  
      Solr4QueryParser getLuceneQueryParser​(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.NamespaceDAO getNamespaceDAO()  
      static java.lang.String getNodeDocumentId​(java.lang.String tenant, java.lang.Long aclId, java.lang.Long dbid)
      Returns the Solr document identifier in the following format <TENANT>!<ACLID>!<DBID>
      org.alfresco.service.cmr.dictionary.PropertyDefinition getPropertyDefinition​(org.alfresco.service.namespace.QName propertyQName)  
      AlfrescoSolrDataModel.IndexedField getQueryableFields​(org.alfresco.service.namespace.QName propertyQName, AlfrescoSolrDataModel.ContentFieldType type, AlfrescoSolrDataModel.FieldUse fieldUse)  
      java.lang.ClassLoader getResourceClassLoader()  
      static java.io.File getResourceDirectory()  
      static java.lang.String getTenantId​(java.lang.String tenant)  
      AlfrescoSolrDataModel.ContentFieldType getTextField​(java.lang.String ending)  
      static java.lang.String getTransactionDocumentId​(java.lang.Long txId)
      Returns the Transaction Document identifier in the following format TRACKER!TX!<TX_ID>
      java.lang.String mapNonPropertyFields​(java.lang.String queryField)  
      java.lang.String mapProperty​(java.lang.String potentialProperty, AlfrescoSolrDataModel.FieldUse fieldUse, org.apache.solr.request.SolrQueryRequest req)  
      java.lang.String mapProperty​(java.lang.String potentialProperty, AlfrescoSolrDataModel.FieldUse fieldUse, org.apache.solr.request.SolrQueryRequest req, int position)  
      static java.lang.Long parseAclChangeSetId​(java.lang.String documentId)
      Extracts the ACL changeset identifier from the input document identifier.
      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, java.lang.String alternativeDictionary, org.apache.chemistry.opencmis.commons.enums.CmisVersion cmisVersion)  
      static java.lang.Long parseTransactionId​(java.lang.String documentId)
      Extracts the transaction identifier from the input document identifier.
      boolean putModel​(org.alfresco.repo.dictionary.M2Model model)  
      void removeModel​(org.alfresco.service.namespace.QName modelQName)  
      void setCMDefaultUri()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • CONTENT_S_LOCALE_PREFIX

        public static final java.lang.String CONTENT_S_LOCALE_PREFIX
        See Also:
        Constant Field Values
      • CONTENT_M_LOCALE_PREFIX

        public static final java.lang.String CONTENT_M_LOCALE_PREFIX
        See Also:
        Constant Field Values
      • log

        protected static final org.slf4j.Logger log
    • Constructor Detail

      • AlfrescoSolrDataModel

        public AlfrescoSolrDataModel()
    • Method Detail

      • close

        public void close()
      • getTenantId

        public static java.lang.String getTenantId​(java.lang.String tenant)
      • getAclDocumentId

        public static java.lang.String getAclDocumentId​(java.lang.String tenant,
                                                        java.lang.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 java.lang.String getAclChangeSetDocumentId​(java.lang.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 java.lang.Long parseAclChangeSetId​(java.lang.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 java.lang.Long parseTransactionId​(java.lang.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 java.lang.String getNodeDocumentId​(java.lang.String tenant,
                                                         java.lang.Long aclId,
                                                         java.lang.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>
      • getTransactionDocumentId

        public static java.lang.String getTransactionDocumentId​(java.lang.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 java.lang.String getAlfrescoPropertyFromSchemaField​(java.lang.String schemaField)
      • getNamespaceDAO

        public org.alfresco.repo.dictionary.NamespaceDAO getNamespaceDAO()
      • getCommonConfig

        public static java.util.Properties getCommonConfig()
      • getResourceClassLoader

        public java.lang.ClassLoader getResourceClassLoader()
        Returns:
        ClassLoader
      • getResourceDirectory

        public static java.io.File getResourceDirectory()
      • getDictionaryService

        public org.alfresco.repo.dictionary.DictionaryComponent getDictionaryService​(java.lang.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
      • 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 java.lang.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,
                                                                                                    java.lang.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,
                                                                                                           java.lang.String alternativeDictionary)
      • getCMISDictionary

        public org.alfresco.opencmis.dictionary.CMISDictionaryService getCMISDictionary​(java.lang.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 java.util.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,​java.lang.Boolean> searchParametersAndFilter,
                                                           org.apache.solr.request.SolrQueryRequest req,
                                                           org.alfresco.repo.search.impl.querymodel.Query queryModelQuery,
                                                           org.apache.chemistry.opencmis.commons.enums.CmisVersion cmisVersion,
                                                           java.lang.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,
                                                                                                                                                                                                                                                          java.lang.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,​java.lang.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 java.lang.String mapProperty​(java.lang.String potentialProperty,
                                            AlfrescoSolrDataModel.FieldUse fieldUse,
                                            org.apache.solr.request.SolrQueryRequest req)
      • mapProperty

        public java.lang.String mapProperty​(java.lang.String potentialProperty,
                                            AlfrescoSolrDataModel.FieldUse fieldUse,
                                            org.apache.solr.request.SolrQueryRequest req,
                                            int position)
      • mapNonPropertyFields

        public java.lang.String mapNonPropertyFields​(java.lang.String queryField)
      • setCMDefaultUri

        public void setCMDefaultUri()