As an option, Eloquence implements "ODX" calls to access the Eloquence FTS
functionality. This allows existing applications relying on ODX/DBI calls
to make use of Eloquence FTS indexes with no or only minor changes.
New applications should use IMAGE TPI calls to access FTS indexes.
A separate B.08.20 "FTC" license key is required to enable
ODX/DBI call compatiblity.
The ODX compatibility is implemented in the libftc library.
This library must be loaded to enable ODX calls.
The libftc library internally makes use of the image3k
library (implementing the TurboIMAGE compatibility) and the
eqdb library (Eloquence client library).
The libftc also implements support for "DBI" calls to access
the Eloquence native indexes. Please note that DBI calls are not
required to use ODX calls. ODX calls may be used with any database
opened through the image3k library. dbexplain and dberror are aware
of ODX (or DBI) specific status codes.
Documentation of the ODX/DBI calls as implemented by the
Eloquence libftc:
Migrating from Omnidex to Eloquence FTC
Eloquence B.08.20 needs to be installed and the B.08.20 hp3k
and ftc license keys must be present.
The Omnidex dbinstal syntax must be translated manually to
the equivalent dbutil syntax. dbutil is then used to create
the FTS indexes. Any existing and future data is indexed
automatically.
Any secondary indexes (IMSAM) must also be created in Eloquence
(using dbutil).
Please note that creating an index on a master set search item
is is not required (and is discouraged) as Eloquence already uses
indexes for master set search items.
The application must make use of the libftc library instead
of Omnidex libraries. If necessary specify a SHLIB_PATH or LD_LIBRARY_PATH
and/or create symbolic links.
Notes:
-
Eloquence FTC does not need (and does not support) "alternate IDs".
It implements the equivalent of "transparent IDs".
As Eloquence does not use hashing there is no need to maintain a
separate ID to identify the record.
Consequently, ODXINFO mode 8 returns a hard coded response indicating
use of transparent IDs and ODXINFO modes 9 and 10 are not available.
-
With Eloquence a master set without any FTS fields does not need to
(and can't) be designated a domain master in dbutil. It becomes a
domain master equivalant once a linked detail exists.
-
By default any FTS field in a detail set linked to a master set is
record specific (equivalent to the RS option).
To specifiy RC fields in a linked detail the AGG option must be used
with the PATH= option.
-
With Eloquence, each field in a detail set may be configured individually
to link to a master set (with the PATH= option).
However, only one master set may be specified for a detail set
(any fields configured to link to a master set must refer to the
same master set).
ODXINFO assumes that a detail set is in a search domain if at least
one field is linked. This may have the effect that previous search
results on a detail may not be applicable to the domain master.
For full ODX compatibility all fields in a linked detail should be linked.
When a field is linked to a master set a reference to the detail record
is maintained in addition to a reference to the master record (equivalent
to the Omnidex RS option).
When the AGG option is used, keyword references are maintained
aggregated for each master record (equivalent to the Omnidex RC option).
When a field is not linked only a reference to the detail record
is maintained (similar to standalone details with Omnidex).
Using aggregated fields is an efficient way to maintain keyword
references as only a reference to the master record is maintained
for any number of detail records.
Using fields not linked to a master set is more efficient than
linked fields.
-
Any Omnidex field option (other than RS/RC) must be specified as a
field option in dbutil, equivalent options exist.
-
For close Omnidex compatibility the parser config 0 should
be defined as below (dbutil syntax):
CHANGE FTS PARSER CONFIG P0
nsep = ""
csep = "%#$&"
multi = "-/_'"
dec = ".,"
;
The default Eloquence parser config has a different default
for the csep and multi parser configuration options.
-
The default keyword length in Eloquence is 12 bytes with a minimum
keyword length of 2 bytes (shorter words are excluded implicitly).
This may be specified per FTS field.
Omnidex uses a global keyword length for all fields and does not
support a minimum keyword length. For close Omnidex compatibility
it should be considered to specity the keyword length (MAX=# option)
and a zero keyword length (MIN=# option) when definining the FTS
fields in dbutil.
-
When migrating secondary indexes (IMSAM) please keep in mind that
Eloquence indexes are case sensitive and include empty values
by default. The Omnidex defaults are the opposite.
The following example defines a secondary index ITEM-NO on the
ITEM-DETAILS set using dbutil syntax specifying a case insentive
keys and ignoring empty values.
create iitem ITEM-NO(empty,ci) = ITEM-NO;
change set ITEM-DETAILS add index ITEM-NO;
|