[Home] [Help]
100: PROCEDURE dropPreferences IS
101: BEGIN
102: -- datastore preference
103: BEGIN
104: ctx_ddl.drop_policy(policy_name => PolicyFilterName);
105: EXCEPTION WHEN OTHERS THEN NULL; END;
106: -- policy preference
107: BEGIN
108: ctx_ddl.drop_preference(DatastorePref);
104: ctx_ddl.drop_policy(policy_name => PolicyFilterName);
105: EXCEPTION WHEN OTHERS THEN NULL; END;
106: -- policy preference
107: BEGIN
108: ctx_ddl.drop_preference(DatastorePref);
109: EXCEPTION WHEN OTHERS THEN NULL; END;
110: -- filter preference
111: BEGIN
112: ctx_ddl.drop_preference(FilterPref);
108: ctx_ddl.drop_preference(DatastorePref);
109: EXCEPTION WHEN OTHERS THEN NULL; END;
110: -- filter preference
111: BEGIN
112: ctx_ddl.drop_preference(FilterPref);
113: EXCEPTION WHEN OTHERS THEN NULL; END;
114: BEGIN
115: ctx_ddl.drop_preference(AutoFilterPref);
116: EXCEPTION WHEN OTHERS THEN NULL; END;
111: BEGIN
112: ctx_ddl.drop_preference(FilterPref);
113: EXCEPTION WHEN OTHERS THEN NULL; END;
114: BEGIN
115: ctx_ddl.drop_preference(AutoFilterPref);
116: EXCEPTION WHEN OTHERS THEN NULL; END;
117: -- section group
118: BEGIN
119: ctx_ddl.drop_section_group(SectionGroupPref);
115: ctx_ddl.drop_preference(AutoFilterPref);
116: EXCEPTION WHEN OTHERS THEN NULL; END;
117: -- section group
118: BEGIN
119: ctx_ddl.drop_section_group(SectionGroupPref);
120: EXCEPTION WHEN OTHERS THEN NULL; END;
121: -- lexer preferences
122: BEGIN
123: ctx_ddl.drop_preference(MultiLexerPref);
119: ctx_ddl.drop_section_group(SectionGroupPref);
120: EXCEPTION WHEN OTHERS THEN NULL; END;
121: -- lexer preferences
122: BEGIN
123: ctx_ddl.drop_preference(MultiLexerPref);
124: EXCEPTION WHEN OTHERS THEN NULL; END;
125: BEGIN
126: ctx_ddl.drop_preference(DefaultLexerPref);
127: EXCEPTION WHEN OTHERS THEN NULL; END;
122: BEGIN
123: ctx_ddl.drop_preference(MultiLexerPref);
124: EXCEPTION WHEN OTHERS THEN NULL; END;
125: BEGIN
126: ctx_ddl.drop_preference(DefaultLexerPref);
127: EXCEPTION WHEN OTHERS THEN NULL; END;
128: -- wordlist preferences
129: BEGIN
130: ctx_ddl.drop_preference(WordlistPref);
126: ctx_ddl.drop_preference(DefaultLexerPref);
127: EXCEPTION WHEN OTHERS THEN NULL; END;
128: -- wordlist preferences
129: BEGIN
130: ctx_ddl.drop_preference(WordlistPref);
131: EXCEPTION WHEN OTHERS THEN NULL; END;
132: -- stoplist preferences
133: BEGIN
134: ctx_ddl.drop_stoplist(StoplistPref);
130: ctx_ddl.drop_preference(WordlistPref);
131: EXCEPTION WHEN OTHERS THEN NULL; END;
132: -- stoplist preferences
133: BEGIN
134: ctx_ddl.drop_stoplist(StoplistPref);
135: EXCEPTION WHEN OTHERS THEN NULL; END;
136: -- storage preference
137: BEGIN
138: ctx_ddl.drop_preference(StoragePref);
134: ctx_ddl.drop_stoplist(StoplistPref);
135: EXCEPTION WHEN OTHERS THEN NULL; END;
136: -- storage preference
137: BEGIN
138: ctx_ddl.drop_preference(StoragePref);
139: EXCEPTION WHEN OTHERS THEN NULL; END;
140:
141: END dropPreferences;
142:
159: ELSE
160: LexerPref := DefaultLexerPref;
161: END IF;
162:
163: ctx_ddl.create_policy(policy_name =>PolicyFilterName,
164: filter =>AutoFilterPref);
165: END createPreferences;
166:
167: --
169: -- is used.
170: --
171: PROCEDURE createDatastorePref IS
172: BEGIN
173: ctx_ddl.create_preference(DatastorePref, 'USER_DATASTORE');
174: ctx_ddl.set_attribute(DatastorePref, 'PROCEDURE', 'XDB_DATASTORE_PROC');
175: ctx_ddl.set_attribute(DatastorePref, 'OUTPUT_TYPE', 'CLOB');
176: END createDatastorePref;
177:
170: --
171: PROCEDURE createDatastorePref IS
172: BEGIN
173: ctx_ddl.create_preference(DatastorePref, 'USER_DATASTORE');
174: ctx_ddl.set_attribute(DatastorePref, 'PROCEDURE', 'XDB_DATASTORE_PROC');
175: ctx_ddl.set_attribute(DatastorePref, 'OUTPUT_TYPE', 'CLOB');
176: END createDatastorePref;
177:
178: --
171: PROCEDURE createDatastorePref IS
172: BEGIN
173: ctx_ddl.create_preference(DatastorePref, 'USER_DATASTORE');
174: ctx_ddl.set_attribute(DatastorePref, 'PROCEDURE', 'XDB_DATASTORE_PROC');
175: ctx_ddl.set_attribute(DatastorePref, 'OUTPUT_TYPE', 'CLOB');
176: END createDatastorePref;
177:
178: --
179: -- Creates the filter preference.
181: -- APIs to INSO when appropriate
182: --
183: PROCEDURE createFilterPref IS
184: BEGIN
185: ctx_ddl.create_preference(FilterPref, 'NULL_FILTER');
186: ctx_ddl.create_preference(AutoFilterPref, 'AUTO_FILTER');
187: END createFilterPref;
188:
189: --
182: --
183: PROCEDURE createFilterPref IS
184: BEGIN
185: ctx_ddl.create_preference(FilterPref, 'NULL_FILTER');
186: ctx_ddl.create_preference(AutoFilterPref, 'AUTO_FILTER');
187: END createFilterPref;
188:
189: --
190: -- Creates the section group.
190: -- Creates the section group.
191: --
192: PROCEDURE createSectiongroupPref IS
193: BEGIN
194: ctx_ddl.create_section_group(SectionGroupPref, SectionGroup);
195: END createSectiongroupPref;
196:
197: --
198: -- Creates the lexer preferences
201: -- Currently, the multi-lexer is not used.
202: --
203: PROCEDURE createLexerPref IS
204: BEGIN
205: ctx_ddl.create_preference(DefaultLexerPref, 'BASIC_LEXER');
206: -- Turn on base letter translations
207: ctx_ddl.set_attribute(DefaultLexerPref, 'base_letter', 'YES');
208:
209: ctx_ddl.create_preference(MultiLexerPref, 'MULTI_LEXER');
203: PROCEDURE createLexerPref IS
204: BEGIN
205: ctx_ddl.create_preference(DefaultLexerPref, 'BASIC_LEXER');
206: -- Turn on base letter translations
207: ctx_ddl.set_attribute(DefaultLexerPref, 'base_letter', 'YES');
208:
209: ctx_ddl.create_preference(MultiLexerPref, 'MULTI_LEXER');
210: ctx_ddl.add_sub_lexer(MultiLexerPref, 'DEFAULT', DefaultLexerPref);
211: END createLexerPref;
205: ctx_ddl.create_preference(DefaultLexerPref, 'BASIC_LEXER');
206: -- Turn on base letter translations
207: ctx_ddl.set_attribute(DefaultLexerPref, 'base_letter', 'YES');
208:
209: ctx_ddl.create_preference(MultiLexerPref, 'MULTI_LEXER');
210: ctx_ddl.add_sub_lexer(MultiLexerPref, 'DEFAULT', DefaultLexerPref);
211: END createLexerPref;
212:
213: --
206: -- Turn on base letter translations
207: ctx_ddl.set_attribute(DefaultLexerPref, 'base_letter', 'YES');
208:
209: ctx_ddl.create_preference(MultiLexerPref, 'MULTI_LEXER');
210: ctx_ddl.add_sub_lexer(MultiLexerPref, 'DEFAULT', DefaultLexerPref);
211: END createLexerPref;
212:
213: --
214: -- Creates the word-list preferences
214: -- Creates the word-list preferences
215: --
216: PROCEDURE createWordlistPref IS
217: BEGIN
218: ctx_ddl.create_preference(WordlistPref, 'BASIC_WORDLIST');
219:
220: -- default values for stemming and fuzzy match
221: ctx_ddl.set_attribute(WordlistPref, 'fuzzy_match', 'AUTO');
222: ctx_ddl.set_attribute(WordlistPref, 'stemmer', 'AUTO');
217: BEGIN
218: ctx_ddl.create_preference(WordlistPref, 'BASIC_WORDLIST');
219:
220: -- default values for stemming and fuzzy match
221: ctx_ddl.set_attribute(WordlistPref, 'fuzzy_match', 'AUTO');
222: ctx_ddl.set_attribute(WordlistPref, 'stemmer', 'AUTO');
223: END createWordlistPref;
224:
225: --
218: ctx_ddl.create_preference(WordlistPref, 'BASIC_WORDLIST');
219:
220: -- default values for stemming and fuzzy match
221: ctx_ddl.set_attribute(WordlistPref, 'fuzzy_match', 'AUTO');
222: ctx_ddl.set_attribute(WordlistPref, 'stemmer', 'AUTO');
223: END createWordlistPref;
224:
225: --
226: -- Creates the stoplist.
236: -- You can also create a MULTI_STOPLIST instead of a basic stoplist
237: -- The problem then is to specify the appropriate language for the
238: -- stopwords that are part of the default stoplist, and the stopwords
239: -- that the user provides
240: -- ctx_ddl.create_stoplist(StoplistPref, 'MULTI_STOPLIST');
241: --
242: IF UseMultiLexer = true THEN
243: ctx_ddl.create_stoplist(StoplistPref, 'MULTI_STOPLIST');
244: ELSE
239: -- that the user provides
240: -- ctx_ddl.create_stoplist(StoplistPref, 'MULTI_STOPLIST');
241: --
242: IF UseMultiLexer = true THEN
243: ctx_ddl.create_stoplist(StoplistPref, 'MULTI_STOPLIST');
244: ELSE
245: ctx_ddl.create_stoplist(StoplistPref, 'BASIC_STOPLIST');
246: END IF;
247:
241: --
242: IF UseMultiLexer = true THEN
243: ctx_ddl.create_stoplist(StoplistPref, 'MULTI_STOPLIST');
244: ELSE
245: ctx_ddl.create_stoplist(StoplistPref, 'BASIC_STOPLIST');
246: END IF;
247:
248: -- don't index any numbers
249: ctx_ddl.add_stopclass(StoplistPref, 'NUMBERS');
245: ctx_ddl.create_stoplist(StoplistPref, 'BASIC_STOPLIST');
246: END IF;
247:
248: -- don't index any numbers
249: ctx_ddl.add_stopclass(StoplistPref, 'NUMBERS');
250:
251: -- extend the local stopwords array
252: wordset.extend(4096);
253: SELECT spw_word BULK COLLECT INTO wordset
256: spw_owner = 'CTXSYS';
257:
258: -- add all stopwords for the default stoplist to our stoplist
259: FOR i in 1..wordset.COUNT LOOP
260: ctx_ddl.add_stopword(StoplistPref, wordset(i));
261: END LOOP;
262:
263: -- Then add our own specific stop words
264: FOR i in 1..StopWords.COUNT LOOP
262:
263: -- Then add our own specific stop words
264: FOR i in 1..StopWords.COUNT LOOP
265: BEGIN
266: ctx_ddl.add_stopword(StoplistPref, StopWords(i));
267: EXCEPTION WHEN OTHERS THEN NULL; END;
268: END LOOP;
269:
270: END createStoplistPref;
285: -- default tablespace. Only one row can be returned from the query.
286: IndexTableSpace := xdb.dbms_xdb.getxdb_tablespace();
287: ts_clause := 'tablespace ' || IndexTableSpace;
288:
289: ctx_ddl.create_preference(StoragePref, 'BASIC_STORAGE');
290: ctx_ddl.set_attribute(StoragePref, 'I_TABLE_CLAUSE', ts_clause);
291: ctx_ddl.set_attribute(StoragePref, 'K_TABLE_CLAUSE', ts_clause);
292: ctx_ddl.set_attribute(StoragePref, 'R_TABLE_CLAUSE',
293: ts_clause || ' lob(data) store as (cache)');
286: IndexTableSpace := xdb.dbms_xdb.getxdb_tablespace();
287: ts_clause := 'tablespace ' || IndexTableSpace;
288:
289: ctx_ddl.create_preference(StoragePref, 'BASIC_STORAGE');
290: ctx_ddl.set_attribute(StoragePref, 'I_TABLE_CLAUSE', ts_clause);
291: ctx_ddl.set_attribute(StoragePref, 'K_TABLE_CLAUSE', ts_clause);
292: ctx_ddl.set_attribute(StoragePref, 'R_TABLE_CLAUSE',
293: ts_clause || ' lob(data) store as (cache)');
294: ctx_ddl.set_attribute(StoragePref, 'N_TABLE_CLAUSE', ts_clause);
287: ts_clause := 'tablespace ' || IndexTableSpace;
288:
289: ctx_ddl.create_preference(StoragePref, 'BASIC_STORAGE');
290: ctx_ddl.set_attribute(StoragePref, 'I_TABLE_CLAUSE', ts_clause);
291: ctx_ddl.set_attribute(StoragePref, 'K_TABLE_CLAUSE', ts_clause);
292: ctx_ddl.set_attribute(StoragePref, 'R_TABLE_CLAUSE',
293: ts_clause || ' lob(data) store as (cache)');
294: ctx_ddl.set_attribute(StoragePref, 'N_TABLE_CLAUSE', ts_clause);
295: ctx_ddl.set_attribute(StoragePref, 'I_INDEX_CLAUSE',
288:
289: ctx_ddl.create_preference(StoragePref, 'BASIC_STORAGE');
290: ctx_ddl.set_attribute(StoragePref, 'I_TABLE_CLAUSE', ts_clause);
291: ctx_ddl.set_attribute(StoragePref, 'K_TABLE_CLAUSE', ts_clause);
292: ctx_ddl.set_attribute(StoragePref, 'R_TABLE_CLAUSE',
293: ts_clause || ' lob(data) store as (cache)');
294: ctx_ddl.set_attribute(StoragePref, 'N_TABLE_CLAUSE', ts_clause);
295: ctx_ddl.set_attribute(StoragePref, 'I_INDEX_CLAUSE',
296: ts_clause || ' compress 2');
290: ctx_ddl.set_attribute(StoragePref, 'I_TABLE_CLAUSE', ts_clause);
291: ctx_ddl.set_attribute(StoragePref, 'K_TABLE_CLAUSE', ts_clause);
292: ctx_ddl.set_attribute(StoragePref, 'R_TABLE_CLAUSE',
293: ts_clause || ' lob(data) store as (cache)');
294: ctx_ddl.set_attribute(StoragePref, 'N_TABLE_CLAUSE', ts_clause);
295: ctx_ddl.set_attribute(StoragePref, 'I_INDEX_CLAUSE',
296: ts_clause || ' compress 2');
297: ctx_ddl.set_attribute(StoragePref, 'P_TABLE_CLAUSE', ts_clause);
298: END createStoragePref;
291: ctx_ddl.set_attribute(StoragePref, 'K_TABLE_CLAUSE', ts_clause);
292: ctx_ddl.set_attribute(StoragePref, 'R_TABLE_CLAUSE',
293: ts_clause || ' lob(data) store as (cache)');
294: ctx_ddl.set_attribute(StoragePref, 'N_TABLE_CLAUSE', ts_clause);
295: ctx_ddl.set_attribute(StoragePref, 'I_INDEX_CLAUSE',
296: ts_clause || ' compress 2');
297: ctx_ddl.set_attribute(StoragePref, 'P_TABLE_CLAUSE', ts_clause);
298: END createStoragePref;
299:
293: ts_clause || ' lob(data) store as (cache)');
294: ctx_ddl.set_attribute(StoragePref, 'N_TABLE_CLAUSE', ts_clause);
295: ctx_ddl.set_attribute(StoragePref, 'I_INDEX_CLAUSE',
296: ts_clause || ' compress 2');
297: ctx_ddl.set_attribute(StoragePref, 'P_TABLE_CLAUSE', ts_clause);
298: END createStoragePref;
299:
300: --
301: -- Determines the filtering to use for a document
498: -- Sync's up the index
499: --
500: PROCEDURE syncIndex(myIndexName VARCHAR2, myIndexMemory VARCHAR2) IS
501: BEGIN
502: ctx_ddl.sync_index(myIndexName, myIndexMemory, maxtime=>SyncTimeOut);
503: END syncIndex;
504:
505: --
506: -- Set time limit for Sync Index
516: --
517: PROCEDURE optimizeIndex IS
518: BEGIN
519: null;
520: -- ctx_ddl.optimize_index(IndexName, lvl, OptimizeTime, NULL, NULL);
521: END optimizeIndex;
522:
523: --
524: -- This function determines if a sync is needed.