ixSetIndexCreationParams sets the various parameters inside an index creation object. There are many different values which you can set that will allow you to control the various attributes of an index when you create it. An index creation parameter object is basically a single object which stores all the values needed to create an index. It is used instead of passing in the parameters individually due to the large number of possible parameters and to allow for easier expansion in the future. A list of the various settings which may be set and their parameters are as follows:
ixSetSinglePointIndex -- Makes all the data generated for the index be stored in a single file. This is advantageous for end user products where it is nice for a user to manage everything within a single data file. However, index files are limited in size to 2GB due to file system limitations and those imposed by the size of a long integer on many systems. When this parameter is set, the ixSetDistributedIndex is over written. The parameter for this setting is ignored (though NULL should be passed in to be safe and to indicate this).
ixSetDistributedIndex -- Manages the data for the index in multiple files. The main advantage of a distributed index is that the limitation on the index size is not limited by the size a file may be in the file system or the size of an integer. Distributed indexes may be used to index and search literally terabytes of text and may be used to distribute the index over multiple drives and directories. Setting ixSetDistributedIndex overwrites the setting ixSetSinglePointIndex. The parameter for this setting is ignored (though NULL should be passed in to be safe and to indicate this).
ixSetIndexMode -- Sets the style of index to create. An index may have one of three different modes. The parameter is a pointer to an integer or a pointer to a value of type IndexModeT. The various modes are described in the documentation for ixCreateIndex.
ixSetRankingMethodOne -- Sets the style of the calculations used for relevancy ranking. One of the relevancy ranking methods must be set with either the IDFMode or WordMode index mode for relevancy ranked searches to work.
ixSetRankingMethodTwo -- -- Sets the style of the calculations used for relevancy ranking. One of the relevancy ranking methods must be set with either the IDFMode or WordMode index mode for relevancy ranked searches to work. Note: This is probably the best ranking method for most applications.
ixSetIndexFileName -- Sets the file name of the index which will be created. The parameter for this setting is a pointer to a NULL terminated string (C-String) which specifies the filename of the file in whatever format is appropriate for your operating system.
ixSetVariableLengthRecordInfo -- You may store a piece of data along with every record indexed. This may be a file name, URL, section of text, web page, database ID, or just about anything else. Setting this setting allows you to store variable length pieces of data along with each record rather than fixed length pieces of data. The advantage, of course, is that the piece of data is variable length. Retrieving it will be slightly slower than retrieving fixed length pieces of data though you may save space in your index file depending on the data that you store. If you set this, you will need to ensure that you store a piece of data along with every record you index. Setting this setting overwrites the setting ixSetFixedLengthRecordInfo. The parameter for this setting is ignored and should be set to NULL.
ixSetFixedLengthRecordInfo -- This operates the same as ixSetVariableLengthRecordInfo except that it expects (and stores) a fixed length piece of data along with every record. The only difference is that the data which is stored with each record may only be a fixed length allowing for slightly faster retrieval times. The parameter for this setting is a pointer to a 32 bit integer which specifies the length of the data associated with each record. This setting overwrites the ixSetVariableLengthRecordInfo setting. Be sure to set the offset length using ixSet32BitRecordInfoOffset or ixSet64BitRecordInfoOffset.
ixSet32BitRecordInfoOffset -- If you are going to store a piece of data that is associated with each record, you need to store the size of the offset table. A smaller offset size allows for better index caching and memory utilization. ixSet32BitRecordInfoOffset is the proper setting for most every application as ixSet64BitRecordInfoOffset is primarily provided for future use. Setting this setting overwrites the ixSet64BitRecordInfoOffset setting.
ixSet64BitRecordInfoOffset -- This is the same as ixSet32BitRecordInfoOffset except that the file offsets are 64 bits instead of 32 bits. While this setting may be used, it is not required by most applications with ixSet32BitRecordInfoOffset being preferred by most users.
ixSetFixedLengthRecordID -- You may store a record ID along with every record indexed. This is optional but if it is set for one record, you need to set a record ID for every record. Record IDs are limited to 120 bytes in length and may be indexed and searched upon. Typically, a record ID is used to map to another database using a database ID. The advantage of a fixed length record ID is that it is slightly faster to retrieve than a variable length record IDs. ixSetFixedLengthRecordID takes as a parameter a pointer to a 16 bit integer specifying the length of the record ids. ixSetFixedLengthRecordID overwrites the setting ixSetVariableLengthRecordID.
ixSetVariableLengthRecordID -- This is the same as ixSetFixedLengthRecordID except that the record IDs are variable length allowing you to potentially save some space in the index. The downside is that variable length record IDs are slightly slower to retrieve than fixed length record IDs. ixSetVariableLnegthRecordID overwrites the setting for ixSetFixedLengthRecordID. The parameter for ixSetVariableLengthRecordID is ignored and so it should be set to NULL.
ixSetRecordID32BitOffset -- Specifies the size of the integers in the lookup table for the record IDs. Typically, a 32 bit offset is adequate for just about all applications (especially if a distributed index is used). This setting overwrites the setting for ixSetRecordID64BitOffset. The parameter for this setting is ignored and thus it should be set to NULL.
ixSetRecordID64BitOffset -- The same as ixSetRecordID32BitOffset except that offsets are 64 bits in size. This is provided primarily for future compatibility. ixSetRecordID32BitOffset is more suitable for most people's applications.
Note: Boolean values such as ixSetDistributedIndex do not need a parameter value. In this case, set the parameter value to NULL.