Class SchemaBuilder


  • public class SchemaBuilder
    extends Object
    Helper class for building Schemas. The pattern for using this is to 1) Import all available search definitions, using the importXXX() methods, 2) provide the available rank types and rank expressions, using the setRankXXX() methods, 3) invoke the build() method, and 4) retrieve the built search objects using the getSchema(String) method.
    • Constructor Detail

      • SchemaBuilder

        public SchemaBuilder()
        For testing only
      • SchemaBuilder

        public SchemaBuilder​(com.yahoo.config.application.api.DeployLogger deployLogger)
        For testing only
      • SchemaBuilder

        public SchemaBuilder​(com.yahoo.config.application.api.DeployLogger deployLogger,
                             RankProfileRegistry rankProfileRegistry)
        For testing only
      • SchemaBuilder

        public SchemaBuilder​(boolean documentsOnly)
        Used for generating documents for typed access to document fields in Java
      • SchemaBuilder

        public SchemaBuilder​(com.yahoo.config.application.api.ApplicationPackage app,
                             com.yahoo.config.application.api.DeployLogger deployLogger)
        For testing only
      • SchemaBuilder

        public SchemaBuilder​(com.yahoo.config.application.api.ApplicationPackage app,
                             com.yahoo.config.application.api.DeployLogger deployLogger,
                             RankProfileRegistry rankProfileRegistry)
        For testing only
      • SchemaBuilder

        public SchemaBuilder​(RankProfileRegistry rankProfileRegistry)
        For testing only
      • SchemaBuilder

        public SchemaBuilder​(RankProfileRegistry rankProfileRegistry,
                             com.yahoo.search.query.profile.QueryProfileRegistry queryProfileRegistry)
        For testing only
      • SchemaBuilder

        public SchemaBuilder​(RankProfileRegistry rankProfileRegistry,
                             com.yahoo.search.query.profile.QueryProfileRegistry queryProfileRegistry,
                             com.yahoo.config.model.api.ModelContext.Properties properties)
      • SchemaBuilder

        public SchemaBuilder​(com.yahoo.config.application.api.ApplicationPackage app,
                             com.yahoo.config.application.api.FileRegistry fileRegistry,
                             com.yahoo.config.application.api.DeployLogger deployLogger,
                             com.yahoo.config.model.api.ModelContext.Properties properties,
                             RankProfileRegistry rankProfileRegistry,
                             com.yahoo.search.query.profile.QueryProfileRegistry queryProfileRegistry)
    • Method Detail

      • importFile

        public String importFile​(String fileName)
                          throws IOException,
                                 ParseException
        Import search definition.
        Parameters:
        fileName - the name of the file to import
        Returns:
        the name of the imported object
        Throws:
        IOException - thrown if the file can not be read for some reason
        ParseException - thrown if the file does not contain a valid search definition
      • importReader

        public String importReader​(com.yahoo.io.reader.NamedReader reader,
                                   String searchDefDir)
                            throws IOException,
                                   ParseException
        Reads and parses the search definition string provided by the given reader. Once all search definitions have been imported, call build().
        Parameters:
        reader - the reader whose content to import
        searchDefDir - the path to use when resolving file references
        Returns:
        the name of the imported object
        Throws:
        ParseException - thrown if the file does not contain a valid search definition
        IOException
      • importString

        public String importString​(String str)
                            throws ParseException
        Import search definition.
        Parameters:
        str - the string to parse
        Returns:
        the name of the imported object
        Throws:
        ParseException - thrown if the file does not contain a valid search definition
      • importRawSchema

        public String importRawSchema​(Schema schema)
        Registers the given schema to the application to be built during build(). A Schema object is considered to be "raw" if it has not already been processed. This is the case for most programmatically constructed schemas used in unit tests.
        Parameters:
        schema - the object to import
        Returns:
        the name of the imported object
        Throws:
        IllegalArgumentException - if the given search object has already been processed
      • build

        public void build()
        Processes and finalizes the schemas of this. Only for testing.
        Throws:
        IllegalStateException - Thrown if this method has already been called.
      • build

        public void build​(boolean validate)
        Processes and finalizes the schemas of this.
        Throws:
        IllegalStateException - thrown if this method has already been called
      • processorsToSkip

        public Set<Class<? extends Processor>> processorsToSkip()
        Returns a modifiable set of processors we should skip for these schemas. Useful for testing.
      • getSchema

        public Schema getSchema()
        Convenience method to call getSchema(String) when there is only a single Schema object built. This method will never return null.
        Returns:
        the built object
        Throws:
        IllegalStateException - if there is not exactly one search.
      • getSchema

        public Schema getSchema​(String name)
        Returns the built Schema object that has the given name. If the name is unknown, this method will simply return null.
        Parameters:
        name - the name of the schema to return, or null to return the only one or throw an exception if there are multiple to choose from
        Returns:
        the built object, or null if none with this name
        Throws:
        IllegalStateException - if build() has not been called.
      • getSchemaList

        public List<Schema> getSchemaList()
        Convenience method to return a list of all built Schema objects.
        Returns:
        the list of built searches
      • createFromString

        public static SchemaBuilder createFromString​(String sd)
                                              throws ParseException
        Convenience factory method to import and build a Schema object from a string.
        Parameters:
        sd - the string to build from
        Returns:
        the built SchemaBuilder object
        Throws:
        ParseException - thrown if there is a problem parsing the string
      • buildFromFile

        public static Schema buildFromFile​(String fileName)
                                    throws IOException,
                                           ParseException
        Convenience factory method to import and build a Schema object from a file. Only for testing.
        Parameters:
        fileName - the file to build from
        Returns:
        the built Schema object
        Throws:
        IOException - thrown if there was a problem reading the file
        ParseException - thrown if there was a problem parsing the file content
      • buildFromFile

        public static Schema buildFromFile​(String fileName,
                                           RankProfileRegistry rankProfileRegistry,
                                           com.yahoo.search.query.profile.QueryProfileRegistry queryProfileRegistry)
                                    throws IOException,
                                           ParseException
        Convenience factory method to import and build a Schema object from a file.
        Parameters:
        fileName - the file to build from
        rankProfileRegistry - registry for rank profiles
        Returns:
        the built Schema object
        Throws:
        IOException - thrown if there was a problem reading the file
        ParseException - thrown if there was a problem parsing the file content
      • buildFromFile

        public static Schema buildFromFile​(String fileName,
                                           com.yahoo.config.application.api.DeployLogger deployLogger,
                                           RankProfileRegistry rankProfileRegistry,
                                           com.yahoo.search.query.profile.QueryProfileRegistry queryProfileRegistry)
                                    throws IOException,
                                           ParseException
        Convenience factory method to import and build a Schema from a file.
        Parameters:
        fileName - the file to build from
        deployLogger - logger for deploy messages
        rankProfileRegistry - registry for rank profiles
        Returns:
        the built Schema object
        Throws:
        IOException - thrown if there was a problem reading the file
        ParseException - thrown if there was a problem parsing the file content
      • createFromRawSchema

        public static SchemaBuilder createFromRawSchema​(Schema rawSchema,
                                                        RankProfileRegistry rankProfileRegistry,
                                                        com.yahoo.search.query.profile.QueryProfileRegistry queryProfileRegistry)
        Convenience factory method to import and build a Schema object from a raw object.
        Parameters:
        rawSchema - the raw object to build from
        Returns:
        the built SchemaBuilder object
        See Also:
        importRawSchema(Schema)
      • buildFromRawSchema

        public static Schema buildFromRawSchema​(Schema rawSchema,
                                                RankProfileRegistry rankProfileRegistry,
                                                com.yahoo.search.query.profile.QueryProfileRegistry queryProfileRegistry)
        Convenience factory method to import and build a Schema object from a raw object.
        Parameters:
        rawSchema - the raw object to build from
        Returns:
        the built Schema object
        See Also:
        importRawSchema(Schema)
      • getQueryProfileRegistry

        public com.yahoo.search.query.profile.QueryProfileRegistry getQueryProfileRegistry()
      • getProperties

        public com.yahoo.config.model.api.ModelContext.Properties getProperties()
      • getDeployLogger

        public com.yahoo.config.application.api.DeployLogger getDeployLogger()