Fields containing data to be indexed for name searching can be specified exclusively by adding NDATA
sections to section groups of type: BASIC_SECTION_GROUP
, HTML_SECTION_GROUP
, or XML_SECTION_GROUP
.
Users can synthesize textual documents, which contain name data, using two possible datastores: MULTI_COLUMN_DATASTORE
or USER_DATASTORE
. The following example uses MULTI_COLUMN_DATASTORE
to pick up relevant columns containing the name data for indexing:
create table people(firstname varchar2(80), surname varchar2(80)); insert into people values('John', 'Smith'); commit; begin ctx_ddl.create_preference('nameds', 'MULTI_COLUMN_DATASTORE'); ctx_ddl.set_attribute('nameds', 'columns', 'firstname,surname'); end; /
This produces the following virtual text for indexing:
<FIRSTNAME> John </FIRSTNAME> <SURNAME> Smith </SURNAME>
You can then create NDATA
sections for FIRSTNAME
and SURNAME
sections:
begin ctx_ddl.create_section_group('namegroup', 'BASIC_SECTION_GROUP'); ctx_ddl.add_ndata_section('namegroup', 'FIRSTNAME', 'FIRSTNAME'); ctx_ddl.add_ndata_section('namegroup', 'SURNAME', 'SURNAME'); end; /
Then create the index using the datastore preference and section group preference created earlier:
create index peopleidx on people(firstname) indextype is ctxsys.context parameters('section group namegroup datastore nameds');
NDATA
sections support both single- and multi-byte data, however, there are character- and term-based limitations. NDATA
section data that is indexed is constrained as follows:
the number of characters in a single, white space delimited term
511
the number of white space delimited terms
255
the total number of characters, including white spaces
511