Does OID repository needs Oracle TEXT?
Does OID repository needs Oracle TEXT?
I remember in 10g I had to add this option, and don't remeber for what purpose. can't find any reference in 11.1.1.5 documentation what was it for?
If you are using a file datastore, then you load the file name into a varchar2 column and you do not load the whole file into a clob column. I have provided a demonstration below. In the demonstration below, the binarytree.txt file contains the word "test1" and the some_title.txt file contains the word "test2". The E drive contains a CD-RW disc, but the machine is my server. The drive and directory path that you use must be accessible to the server. You cannot use a drive on a client machine.
SCOTT@10gXE> begin
2 ctx_ddl.create_preference ('mypref', 'FILE_DATASTORE');
3 ctx_ddl.set_attribute ('mypref', 'PATH', 'e:\');
4 end;
5 /
PL/SQL procedure successfully completed.
SCOTT@10gXE> create table exp1
2 (docids number primary key,
3 title varchar2 (20),
4 text varchar2 (30))
5 /
Table created.
SCOTT@10gXE> insert into exp1 values (1, 'binarytree', 'binarytree.txt')
2 /
1 row created.
SCOTT@10gXE> insert into exp1 values (2, 'some_title', 'some_title.txt')
2 /
1 row created.
SCOTT@10gXE> commit
2 /
Commit complete.
SCOTT@10gXE> create index myindex on exp1 (text)
2 indextype is ctxsys.context
3 parameters ('datastore mypref')
4 /
Index created.
SCOTT@10gXE> select * from exp1
2 where contains(text, 'test2') > 0
3 /
DOCIDS TITLE TEXT
2 some_title some_title.txt
SCOTT@10gXE>
Similar Messages
-
Does Admin server need Oracle Client
I have a setup where the admin server resides on a different server than the managed server. To setup a Data Source/connection pool does the admin server need to have the Oracle client setup for the data source to work which is targeted ONLY to the managed server.
Thanks
JohnJohn Essert wrote:
I have a setup where the admin server resides on a different server than the managed server. To setup a Data Source/connection pool does the admin server need to have the Oracle client setup for the data source to work which is targeted ONLY to the managed server.
Thanks
JohnHi John, no, and we recoomend highly that you use the oracle driver
in the thin mode, which needs no Oracle client installation at all.
Joe -
Does JDBC application need oracle client
We are going to wirte java application that going to use jdbc connection to Oracle database. The question is does this application require to have oracle client software to connect to Oracle?
Thanks.No, I don't thinks so that you don't need a client for using JDBC
Edited by: OrionNet on Dec 8, 2008 11:33 AM
Edited by: OrionNet on Dec 8, 2008 11:37 AM -
NEAR operator alternative when not using. oracle Text ?
hi,
I'm working on a project where i would need a Oracle Text 'NEAR like' operator ...
here is my scenario ...
in db we have Customers ... and every customer has some criterias like different search words( names, towns,cars,etc...) so for every customer i can create an SQL query out of criterias . ....
now .... we can have a criteria like. ...... WHERE fulltext like 'john%'. or even distance search line NEAR inside CONTAINS. ... but then the Oracle text index is needed .....
the only tAble on which Text index is created is our storage table that holds more then 4mil records and growing...
my question is ... is there any way to have a query that would do the same thing as NEAR but without Text index ?
here is how I start ....
I get full newspaper article text from our OCR library ......
then i need to check customer's criterias against this text to see which article is for which customer and then bind the article to the customer
I could do it without Oracle using RegEx , but criterias can get really complicated ... like customer wants only specific MEDIA, or specific category , type , only articles that are from medias that are from specific country etc ... and many more different criterias ... and all this can be wrapped inside brackets with ANDs, ORs, NOT. ....
So the only way to do it is to put it in Oracle and execute the correct query and let Oracle decide if the result is true or false .... but due to NEAR operator I need Oracle text ...
So if I decide to first insert article into our storage table which has Oracle text index to be able to do the correct search .... how fast will this be ????
will the the search become slower when there are 6mil records ? I know I can use FILTER BY to help Text index to do a better and quicker seach ... and how to optimize index ....but still
I'm always asking my self..... why insert the article in a table where there are already 6mil articles and execute query when I only need to check data on one single article and. i already know this article ...
I see two solutions :
- if there is alternative for NEAR without using Oracle text index then i would insert data into temporary table and execute query on this table..... table would always contain only this one article. maybe one option would be to have one 'temp' table with Oracle text index in which i insert this one article and with help of Oracle text based on this one article do the search , and then maybe on a daily basis clear index ..... or when the article is removed from the table ... but this would mean having two Orcle text indexes, cause we already have Oracle text index on our storage table anyway....
- another is to use Oracle text index and insert it into our storage table and hope for the best quick results ....
Maybe I'm exaggerating and query like WHERE id=1234 and CONTAINS(...). will execute faster then I think
If anyone would have any other suggestion I will be happy to try it ..
thanks,
KrisHi,
this is to my knowledge not possible. It is hard for Oracle to do, think about a table with many rows, every row with that column must be checked. So I think only a single varchar2 is possible. Maybe for you will a function work. It is possible to give a function as second parameter.
function return_signup
return varchar2
is
l_signup_name signup.signup_name%type;
begin
select signup_name
into l_signup_name
from signup
where signup_id = 1
and rownum = 1
return l_signup_name;
exception
when no_data_found
then
l_signup_name := 'abracadabra'; -- hope does not exist
return l_signup_name;
end;Now you can use above function in the contains.
select * from user_history_view users --, signup new_user
--where new_user.signup_id = 1
where contains(users.user_name, return_signup)>0;I didn't test the code! Maybe you have to adjust the function for your needs. But it is a idea how this can be done.
Otherwise you must make the check by normaly check the columns by simple using a join:
select * from user_history_view users, signup new_user
where new_user.signup_id = 1
and users.user_name = new_user.signup_name;Herald ten Dam
htendam.wordpress.com -
Deciding between Oracle Text v/s PL/SQL
In the Oracle Text technical document it is mentioned that the Standard ( CONTEXT ) and Catalog ( CTXCAT ) types of index are used to build index for larger co-herent documents and performing mixed querires respectively.
As I read furthur, I understand that if the requirement is not heavily document centric, then may be Oracle Text is not an ideal candidate to use. If most of the data is going to reside primarily in tables, then standard PL/ SQL queries and joins is the way to go. But on the other hand using standard SQL for names matches using LIKE operator, for eg, may not guarantee to work or may be complex to implement when trying wildcard or theme matches.
So the question is do we use Oracle text irrespective of the type of content being indexed i.e table data v/s documents ? How do we make that judgement?What type of data do you have and what types of searches do you want to be able to do? If you need features that are only available in Text, then you need Text. For example, if you will be searching documents that are stored in operatinig system files or in blob columns and you want to do stem searches or fuzzy searches or use a thesaurus, then you will need Oracle Text. If, on the other hand, the data that you have and the searches that you want can be done with or without Text, then you have a choice to make, with the major issue being which is more efficient. When in doubt, a little testing can help you decide. Set up a realistic test environment, test some queries both ways, and see which is fastest. If you are just doing standard searches on varchar2 columns, you may get better performance without Text.
-
Oracle Text - CTX Context Index Soundex Problem
Hi,
I'm running into a problem with Oracle Text when searching using the ! (soundex) option. I've created a simple test example to highlight the issue.
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit
Windows 2008 Server 64-bit
create table test_tab (test_col varchar2(200));
insert all
into test_tab (test_col) values ('ab-tönes')
into test_tab (test_col) values ('ab-tones')
into test_tab (test_col) values ('abtones')
into test_tab (test_col) values ('ab tones')
into test_tab (test_col) values ('ab-tanes')
select * from dual
select * from test_tab
begin
ctx_ddl.create_preference ('test_lex1', 'basic_lexer');
ctx_ddl.set_attribute ('test_lex1', 'whitespace', '/\|-_+&''');
ctx_ddl.set_attribute('test_lex1','base_letter','YES');
-- ctx_ddl.set_attribute('test_lex1','skipjoins','-');
end;
create index test_idx on test_tab (test_col)
indextype is ctxsys.context
parameters
('lexer test_lex1'
select token_text from dr$test_idx$i;
TOKEN_TEXT
AB
ABTONES
TANES
TONES
select * from test_tab where contains (test_col, '!ab tones') > 0;
TEST_COL
ab-tönes
ab-tones
ab tones
select * from test_tab where soundex(test_col) = soundex('ab tones');
TEST_COL
ab-tönes
ab-tones
abtones
ab tones
ab-tanes
So my question is, can anyone suggest an approach whereby I can get the Oracle Text Context index (or CTXCAT index if it's more appropriate) to return all 5 rows like the simple Soundex is doing?
I can't really use soundex as this search query will form part of a search screen for a multi-language application. Soundex is limited to English sounding words, so I need the solution to be able to compare strings that may not "sound" English.
It must be an attribute of the BASIC_LEXER, and I've tried skipjoins, start/end-joins, stop lists, but I just cannot get the Soundex feature of Oracle Text to function like the SOUNDEX() function!
Looking at how the tokens are stored dr$test_idx$i I need Oracle Text to almost concat 'AB' and 'TONES' to search as a single string.
Any help greatly appreciated.
Thanks,I am not getting the same problem that you are getting with the umlat, but I don't see what is different. Please post the result of:
select ctx_report.create_index_script ('test_idx') from dual;
Here are the results on my system. Perhaps you can spot the difference. I added an empty_stoplist, so that it won't print out a long list of stopwords.
SCOTT@orcl12c> create table test_tab (test_col varchar2(200))
2 /
Table created.
SCOTT@orcl12c> insert all
2 into test_tab (test_col) values ('ab-tönes')
3 into test_tab (test_col) values ('ab-tones')
4 into test_tab (test_col) values ('abtones')
5 into test_tab (test_col) values ('ab tones')
6 into test_tab (test_col) values ('ab-tanes')
7 select * from dual
8 /
5 rows created.
SCOTT@orcl12c> select * from test_tab
2 /
TEST_COL
ab-tönes
ab-tones
abtones
ab tones
ab-tanes
5 rows selected.
SCOTT@orcl12c> begin
2 ctx_ddl.create_preference ('test_lex1', 'basic_lexer');
3 ctx_ddl.set_attribute('test_lex1','base_letter','YES');
4 end;
5 /
PL/SQL procedure successfully completed.
SCOTT@orcl12c> create or replace procedure test_proc
2 (p_rowid in rowid,
3 p_clob in out nocopy clob)
4 as
5 begin
6 select replace (translate (test_col, '/\|-_+&''', ' '), ' ', '')
7 into p_clob
8 from test_tab
9 where rowid = p_rowid;
10 end test_proc;
11 /
Procedure created.
SCOTT@orcl12c> show errors
No errors.
SCOTT@orcl12c> begin
2 ctx_ddl.create_preference ('test_ds', 'user_datastore');
3 ctx_ddl.set_attribute ('test_ds', 'procedure', 'test_proc');
4 end;
5 /
PL/SQL procedure successfully completed.
SCOTT@orcl12c> create index test_idx on test_tab (test_col)
2 indextype is ctxsys.context
3 parameters
4 ('lexer test_lex1
5 datastore test_ds
6 stoplist ctxsys.empty_stoplist')
7 /
Index created.
SCOTT@orcl12c> select token_text from dr$test_idx$i
2 /
TOKEN_TEXT
ABTANES
ABTONES
2 rows selected.
SCOTT@orcl12c> variable search_string varchar2(100)
SCOTT@orcl12c> exec :search_string := 'ab tones'
PL/SQL procedure successfully completed.
SCOTT@orcl12c> select * from test_tab
2 where contains
3 (test_col,
4 '!' || replace (:search_string, ' ', ' !') ||
5 ' or !' || replace (:search_string, ' ', '')) > 0
6 /
TEST_COL
ab-tönes
ab-tones
abtones
ab tones
ab-tanes
5 rows selected.
SCOTT@orcl12c> exec :search_string := 'abtones'
PL/SQL procedure successfully completed.
SCOTT@orcl12c> /
TEST_COL
ab-tönes
ab-tones
abtones
ab tones
ab-tanes
5 rows selected.
SCOTT@orcl12c> exec :search_string := 'ab tönes'
PL/SQL procedure successfully completed.
SCOTT@orcl12c> /
TEST_COL
ab-tönes
ab-tones
abtones
ab tones
ab-tanes
5 rows selected.
SCOTT@orcl12c> select ctx_report.create_index_script ('test_idx') from dual
2 /
CTX_REPORT.CREATE_INDEX_SCRIPT('TEST_IDX')
begin
ctx_ddl.create_preference('"TEST_IDX_DST"','USER_DATASTORE');
ctx_ddl.set_attribute('"TEST_IDX_DST"','PROCEDURE','"SCOTT"."TEST_PROC"');
end;
begin
ctx_ddl.create_preference('"TEST_IDX_FIL"','NULL_FILTER');
end;
begin
ctx_ddl.create_section_group('"TEST_IDX_SGP"','NULL_SECTION_GROUP');
end;
begin
ctx_ddl.create_preference('"TEST_IDX_LEX"','BASIC_LEXER');
ctx_ddl.set_attribute('"TEST_IDX_LEX"','BASE_LETTER','YES');
end;
begin
ctx_ddl.create_preference('"TEST_IDX_WDL"','BASIC_WORDLIST');
ctx_ddl.set_attribute('"TEST_IDX_WDL"','STEMMER','ENGLISH');
ctx_ddl.set_attribute('"TEST_IDX_WDL"','FUZZY_MATCH','GENERIC');
end;
begin
ctx_ddl.create_stoplist('"TEST_IDX_SPL"','BASIC_STOPLIST');
end;
begin
ctx_ddl.create_preference('"TEST_IDX_STO"','BASIC_STORAGE');
ctx_ddl.set_attribute('"TEST_IDX_STO"','R_TABLE_CLAUSE','lob (data) store as (
cache)');
ctx_ddl.set_attribute('"TEST_IDX_STO"','I_INDEX_CLAUSE','compress 2');
end;
begin
ctx_output.start_log('TEST_IDX_LOG');
end;
create index "SCOTT"."TEST_IDX"
on "SCOTT"."TEST_TAB"
("TEST_COL")
indextype is ctxsys.context
parameters('
datastore "TEST_IDX_DST"
filter "TEST_IDX_FIL"
section group "TEST_IDX_SGP"
lexer "TEST_IDX_LEX"
wordlist "TEST_IDX_WDL"
stoplist "TEST_IDX_SPL"
storage "TEST_IDX_STO"
begin
ctx_output.end_log;
end;
1 row selected. -
Hi All,
Does anyone know if Oracle Text requires a separate license purchase for 8i EE and 9i EE?
It is stated that Oracle Text is part of 9i enterprise and standard editions on the FAQ site.
http://otn.oracle.com/products/text/x/FAQs/imt_Faq.html
However, it is not clear if it is not necessary to buy another license.
Thanks.
Peace,
JonIt does not require a separate license.
-
Does Oracle Text need to be "enabled"?
We want to start using Oracle Text. Does it need to be "enabled"? Any scripts that need to be run first?
Oracle version 10.1.0.4Hi,
There is nothing to "enable" in order to use Oracle Text. But you need to create domain indexes(CONTEXT, CTXCAT, CTXRULE etc) depending on which features of Oracle Text you want to use. Also, in order to use some of the Oracle Text procedures and packages, you will need the CTXAPP role assigned to you.
Enjoy searching!
Regards,
VenkatR -
database version 11.2.0.4
rac two node
CREATE INDEX MAXIMO.ACTCI_NDX3 ON MAXIMO.ACTCI
(DESCRIPTION)
INDEXTYPE IS CTXSYS.CONTEXT
PARAMETERS('lexer global_lexer language column LANGCODE')
ERROR at line 1:
ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-20000: Oracle Text error:
DRG-10700: preference does not exist: global_lexer
ORA-06512: at "CTXSYS.DRUE", line 160
ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 366Like the error message says, you don't have a global_lexer. So, you need to create a global_lexer and that lexer must have at least a default sub_lexer, then you can use that global_lexer in your index parameters. Please see the demonstration below, including reproduction of the error and solution.
SCOTT@orcl12c> -- reproduction of problem:
SCOTT@orcl12c> CREATE TABLE actci
2 (description VARCHAR2(60),
3 langcode VARCHAR2(30))
4 /
Table created.
SCOTT@orcl12c> CREATE INDEX ACTCI_NDX3 ON ACTCI (DESCRIPTION)
2 INDEXTYPE IS CTXSYS.CONTEXT
3 PARAMETERS('lexer global_lexer language column LANGCODE')
4 /
CREATE INDEX ACTCI_NDX3 ON ACTCI (DESCRIPTION)
ERROR at line 1:
ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-20000: Oracle Text error:
DRG-10700: preference does not exist: global_lexer
ORA-06512: at "CTXSYS.DRUE", line 160
ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 366
SCOTT@orcl12c> -- solution:
SCOTT@orcl12c> DROP INDEX actci_ndx3
2 /
Index dropped.
SCOTT@orcl12c> BEGIN
2 CTX_DDL.CREATE_PREFERENCE ('global_lexer', 'multi_lexer');
3 CTX_DDL.CREATE_PREFERENCE ('english_lexer', 'basic_lexer');
4 CTX_DDL.ADD_SUB_LEXER ('global_lexer', 'default', 'english_lexer');
5 END;
6 /
PL/SQL procedure successfully completed.
SCOTT@orcl12c> CREATE INDEX ACTCI_NDX3 ON ACTCI (DESCRIPTION)
2 INDEXTYPE IS CTXSYS.CONTEXT
3 PARAMETERS('lexer global_lexer language column LANGCODE')
4 /
Index created. -
Help needed with oracle text special character search
Hi all
Using oracle 11g sql developer 4.0
I am facing this challenge where Oracle text when it comes to searching text that contains special character.
This what I have done so far with help of http://www.orafaq.com/forum/t/162229/
CREATE TABLE "SOS"."COMPANY"
( "COMPANY_ID" NUMBER(10,0) NOT NULL ENABLE,
"COMPANY_NAME" VARCHAR2(50 BYTE),
"ADDRESS1" VARCHAR2(50 BYTE),
"ADDRESS2" VARCHAR2(10 BYTE),
"CITY" VARCHAR2(40 BYTE),
"STATE" VARCHAR2(20 BYTE),
"ZIP" NUMBER(5,0)
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;
Insert into COMPANY (COMPANY_ID,COMPANY_NAME,ADDRESS1,ADDRESS2,CITY,STATE,ZIP) values (1,'LSG SOLUTIONS LLC',null,null,null,null,null);
Insert into COMPANY (COMPANY_ID,COMPANY_NAME,ADDRESS1,ADDRESS2,CITY,STATE,ZIP) values (2,'LOVE''S TRAVEL',null,null,null,null,null);
Insert into COMPANY (COMPANY_ID,COMPANY_NAME,ADDRESS1,ADDRESS2,CITY,STATE,ZIP) values (3,'DEVON ENERGY',null,null,null,null,null);
Insert into COMPANY (COMPANY_ID,COMPANY_NAME,ADDRESS1,ADDRESS2,CITY,STATE,ZIP) values (4,'SONIC INC',null,null,null,null,null);
Insert into COMPANY (COMPANY_ID,COMPANY_NAME,ADDRESS1,ADDRESS2,CITY,STATE,ZIP) values (5,'MSCI',null,null,null,null,null);
Insert into COMPANY (COMPANY_ID,COMPANY_NAME,ADDRESS1,ADDRESS2,CITY,STATE,ZIP) values (6,'ERNEST AND YOUNG',null,null,null,null,null);
Insert into COMPANY (COMPANY_ID,COMPANY_NAME,ADDRESS1,ADDRESS2,CITY,STATE,ZIP) values (7,'JOHN DEER',null,null,null,null,null);
Insert into COMPANY (COMPANY_ID,COMPANY_NAME,ADDRESS1,ADDRESS2,CITY,STATE,ZIP) values (8,'Properties@Oklahoma, LLC',null,null,null,null,null);
Insert into COMPANY (COMPANY_ID,COMPANY_NAME,ADDRESS1,ADDRESS2,CITY,STATE,ZIP) values (9,'D.D.T L.L.C.',null,null,null,null,null);
BEGIN
CTX_DDL.CREATE_PREFERENCE ('your_lexer', 'BASIC_LEXER');
CTX_DDL.SET_ATTRIBUTE ('your_lexer', 'SKIPJOINS', '.,@-'''); -- to skip . , @ - ' symbols
END;
CREATE INDEX my_index2 ON COMPANY(COMPANY_NAME)
INDEXTYPE IS CTXSYS.CONTEXT PARALLEL
PARAMETERS ('LEXER your_lexer');
SELECT
company_name
FROM company
WHERE CATSEARCH(company.COMPANY_NAME, 'LLC','') > 0
ORDER BY company.COMPANY_ID;
output
company_name
1 LSG SOLUTIONS LLC
2 Properties@Oklahoma, LLC
only return 2 row but should return 3I just noticed that I forgot to use an empty stoplist, so I have added that to the revised example below. Otherwise, it uses a default stoplist that would not index common single-letter words like A and I.
1. Whtat is Just search on single character 'L'? It give me error.
Since it uses the NEAR operator, searching for just one letter causes incomplete syntax, asking it to search for L near a missing second value. So, I have added additional code to allow for just one letter.
2. How do I do auto refresh on this index on datastore?
If I add "sync (on commit)" it does not refresh the previously set token.
Sync(on commit) does synchronize so that the data is immediately searchable. You have to either optimize or rebuild or drop and recreate the index to condense the rows in the domain index table.
3.lastly explanation of
<seq>NEAR((' || letters_func (:search_string) || '),1,TRUE)</seq>
<seq>NEAR((' || letters_func (:search_string) || '),100,TRUE)</seq>
<seq>NEAR((' || letters_func (:search_string) || '),100,FALSE)</seq>
why 100 true and 100 false
100 is just a default value that I used for the second parameter of near, indicating how close the letters need to be to each other. True and False are values for the third parameter of near, indicating whether or not the letters must be in the same order or not. So, it returns the results in the order of first those that are very close to one another and in the same order, then those that may be further away but in the same order, then those that may be further away and in any order.
SCOTT@orcl12c> CREATE TABLE company_near
2 (company_id NUMBER(10,0) NOT NULL ENABLE,
3 company_name VARCHAR2(50 BYTE))
4 /
Table created.
SCOTT@orcl12c> SET DEFINE OFF
SCOTT@orcl12c> BEGIN
2 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (1,'LSG SOLUTIONS LLC');
3 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (2,'LOVE''S TRAVEL');
4 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (3,'DEVON ENERGY');
5 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (4,'SONIC INC');
6 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (5,'MSCI');
7 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (6,'ERNEST AND YOUNG');
8 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (7,'JOHN DEER');
9 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (8,'Properties@Oklahoma, LLC');
10 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (9,'D.D.T L.L.C.');
11 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (10,'LSG COMPANY, LLC');
12 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (11,'LSG STAFFING, LLC');
13 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (12,'L & S GROUP LLC');
14 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (13,'L S & G, INC.');
15 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (14,'L.S.G. PROPERTIES, L.L.C.');
16 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (15,'LSGS PROPERTIES, LLC');
17 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (16,'LSQ INVESTORS, L.L.C');
18 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (17,'LHP SHERMAN/GRAYSON, LLC');
19 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (18,'Walmart');
20 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (19,'Wal mart');
21 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (20,'LSG Property Investments, L.L.C.');
22 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (21,'1224 S GALVESTON AVE, LLC');
23 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (22,'1527 S GARY AVE, LLC');
24 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (23,'FIFTEENTH STREET GRILL');
25 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (24,'Massa Lobortis LLP');
26 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (25,'Risus A Inc.');
27 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (26,'Dollar $ store');
28 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (27,'L.O.V.E., INC. ');
29 Insert into COMPANY_NEAR (COMPANY_ID,COMPANY_NAME) values (28,'J-MART LLC ');
30 END;
31 /
PL/SQL procedure successfully completed.
SCOTT@orcl12c> CREATE OR REPLACE FUNCTION letters_func
2 (p_string IN VARCHAR2)
3 RETURN VARCHAR2
4 AS
5 v_string VARCHAR2(4000);
6 BEGIN
7 FOR i IN 1 .. LENGTH (p_string)
8 LOOP
9 IF REGEXP_LIKE (SUBSTR (p_string, i, 1), '[A-Z]', 'i')
10 THEN
11 v_string := v_string || SUBSTR (p_string, i, 1) || ',';
12 END IF;
13 END LOOP;
14 v_string := RTRIM (v_string, ',');
15 RETURN v_string;
16 END letters_func;
17 /
Function created.
SCOTT@orcl12c> BEGIN
2 CTX_DDL.CREATE_PREFERENCE ('letters_datastore', 'MULTI_COLUMN_DATASTORE');
3 CTX_DDL.SET_ATTRIBUTE
4 ('letters_datastore',
5 'COLUMNS',
6 'letters_func (company_name) company_name');
7 CTX_DDL.SET_ATTRIBUTE ('letters_datastore', 'DELIMITER', 'NEWLINE');
8 END;
9 /
PL/SQL procedure successfully completed.
SCOTT@orcl12c> CREATE INDEX letters_index ON company_near (company_name)
2 INDEXTYPE IS CTXSYS.CONTEXT
3 PARAMETERS
4 ('DATASTORE letters_datastore
5 STOPLIST CTXSYS.EMPTY_STOPLIST
6 SYNC (ON COMMIT)')
7 /
Index created.
SCOTT@orcl12c> SELECT COUNT(*) FROM dr$letters_index$i
2 /
COUNT(*)
24
1 row selected.
SCOTT@orcl12c> VARIABLE search_string VARCHAR2(100)
SCOTT@orcl12c> EXEC :search_string := 'LSG'
PL/SQL procedure successfully completed.
SCOTT@orcl12c> SELECT SCORE(1), company_id, company_name
2 FROM company_near
3 WHERE CONTAINS
4 (company_name,
5 '<query>
6 <textquery>
7 <progression>
8 <seq>' || :search_string || '</seq>
9 <seq>NEAR((' || letters_func (:search_string) || '),1,TRUE)</seq>
10 <seq>NEAR((' || letters_func (:search_string) || '),100,TRUE)</seq>
11 <seq>NEAR((' || letters_func (:search_string) || '),100,FALSE)</seq>
12 </progression>
13 </textquery>
14 </query>',
15 1) > 0
16 ORDER BY SCORE(1) DESC
17 /
SCORE(1) COMPANY_ID COMPANY_NAME
56 1 LSG SOLUTIONS LLC
56 10 LSG COMPANY, LLC
56 11 LSG STAFFING, LLC
56 12 L & S GROUP LLC
56 13 L S & G, INC.
56 14 L.S.G. PROPERTIES, L.L.C.
56 20 LSG Property Investments, L.L.C.
56 15 LSGS PROPERTIES, LLC
31 17 LHP SHERMAN/GRAYSON, LLC
8 21 1224 S GALVESTON AVE, LLC
4 22 1527 S GARY AVE, LLC
4 23 FIFTEENTH STREET GRILL
12 rows selected.
SCOTT@orcl12c> EXEC :search_string := 'L'
PL/SQL procedure successfully completed.
SCOTT@orcl12c> /
SCORE(1) COMPANY_ID COMPANY_NAME
78 1 LSG SOLUTIONS LLC
77 8 Properties@Oklahoma, LLC
77 9 D.D.T L.L.C.
77 10 LSG COMPANY, LLC
77 11 LSG STAFFING, LLC
77 12 L & S GROUP LLC
77 28 J-MART LLC
77 2 LOVE'S TRAVEL
77 26 Dollar $ store
77 24 Massa Lobortis LLP
77 23 FIFTEENTH STREET GRILL
77 14 L.S.G. PROPERTIES, L.L.C.
77 15 LSGS PROPERTIES, LLC
77 16 LSQ INVESTORS, L.L.C
77 17 LHP SHERMAN/GRAYSON, LLC
77 20 LSG Property Investments, L.L.C.
77 21 1224 S GALVESTON AVE, LLC
77 22 1527 S GARY AVE, LLC
76 19 Wal mart
76 18 Walmart
76 27 L.O.V.E., INC.
76 13 L S & G, INC.
22 rows selected.
SCOTT@orcl12c> INSERT INTO company_near (company_id, company_name) VALUES (30, 'Laris Gordman llc.' )
2 /
1 row created.
SCOTT@orcl12c> COMMIT
2 /
Commit complete.
SCOTT@orcl12c> SELECT COUNT(*) FROM dr$letters_index$i
2 /
COUNT(*)
35
1 row selected.
SCOTT@orcl12c> EXEC :search_string := 'Laris Gordman llc.'
PL/SQL procedure successfully completed.
SCOTT@orcl12c> SELECT SCORE(1), company_id, company_name
2 FROM company_near
3 WHERE CONTAINS
4 (company_name,
5 '<query>
6 <textquery>
7 <progression>
8 <seq>NEAR((' || letters_func (:search_string) || '),1,TRUE)</seq>
9 <seq>NEAR((' || letters_func (:search_string) || '),100,TRUE)</seq>
10 <seq>NEAR((' || letters_func (:search_string) || '),100,FALSE)</seq>
11 </progression>
12 </textquery>
13 </query>',
14 1) > 0
15 ORDER BY SCORE(1) DESC
16 /
SCORE(1) COMPANY_ID COMPANY_NAME
100 30 Laris Gordman llc.
1 row selected.
SCOTT@orcl12c> EXEC CTX_DDL.OPTIMIZE_INDEX ('letters_index', 'FULL')
PL/SQL procedure successfully completed.
SCOTT@orcl12c> SELECT COUNT(*) FROM dr$letters_index$i
2 /
COUNT(*)
24
1 row selected. -
How does oracle text differentiate between various document formats?
how does oracle text differentiate between text documents of various formats. does it read binary headers or a file extension is necessary?
please comment..Oracle uses the inso_filter for document filtering as desribed in the documentation:
http://download-west.oracle.com/docs/cd/B10501_01/text.920/a96518/afilsupt.htm#625110
I did a little test (included below) where I copied a .pdf file to a file with a .test extension and it was still able to index it and search it, so apparently it does not need the file extensions and must read the header.
scott@10gXE> BEGIN
2 CTX_DDL.CREATE_PREFERENCE ('test_datastore', 'FILE_DATASTORE');
3 CTX_DDL.SET_ATTRIBUTE ('test_datastore', 'PATH', 'c:\oracle');
4 END;
5 /
PL/SQL procedure successfully completed.
scott@10gXE> CREATE TABLE test_tab
2 (id NUMBER,
3 docs VARCHAR2 (2000),
4 CONSTRAINT test_tab_id_pk PRIMARY KEY (id))
5 /
Table created.
scott@10gXE> INSERT INTO test_tab VALUES (1, 'master~1.pdf')
2 /
1 row created.
scott@10gXE> CREATE INDEX test_tab_idx ON test_tab (docs)
2 INDEXTYPE IS CTXSYS.CONTEXT
3 PARAMETERS
4 ('DATASTORE test_datastore
5 FILTER CTXSYS.INSO_FILTER')
6 /
Index created.
scott@10gXE> SELECT id FROM test_tab
2 WHERE CONTAINS (docs, 'meat') > 0
3 /
ID
1
scott@10gXE>
scott@10gXE> DROP INDEX test_tab_idx
2 /
Index dropped.
scott@10gXE> HOST COPY c:\oracle\master~1.pdf c:\oracle\master.test
scott@10gXE> INSERT INTO test_tab VALUES (2, 'master.test')
2 /
1 row created.
scott@10gXE> CREATE INDEX test_tab_idx ON test_tab (docs)
2 INDEXTYPE IS CTXSYS.CONTEXT
3 PARAMETERS
4 ('DATASTORE test_datastore
5 FILTER CTXSYS.INSO_FILTER')
6 /
Index created.
scott@10gXE> SELECT id FROM test_tab
2 WHERE CONTAINS (docs, 'meat') > 0
3 /
ID
1
2
scott@10gXE> -
Is Oracle Text the right solution for this need of a specific search!
Hi ,
We are on Oracle 11.2.0.2 on Solaris 10. We have the need to be able to do search on data that are having diacritical marks and we should be able to do the serach ignoring this diacritical marks. That is the requirement. Now I got to hear that Oracle Text has a preference called BASIC_LEXER which can bypass the diacritical marks and so solely due to this feature I implemented Oracle Text and just for this diacritical search and no other need.
I mean I set up preference like this:
ctxsys.ctx_ddl.create_preference ('cust_lexer', 'BASIC_LEXER');
ctxsys.ctx_ddl.set_attribute ('cust_lexer', 'base_letter', 'YES'); -- removes diacritics
With this I set up like this:
CREATE TABLE TEXT_TEST
NAME VARCHAR2(255 BYTE)
--created Oracle Text index
CREATE INDEX TEXT_TEST_IDX1 ON TEXT_TEST
(NAME)
INDEXTYPE IS CTXSYS.CONTEXT
PARAMETERS('LEXER cust_lexer WORDLIST cust_wl SYNC (ON COMMIT)');
--sample data to illustrate the problem
Insert into TEXT_TEST
(NAME)
Values
('muller');
Insert into TEXT_TEST
(NAME)
Values
('müller');
Insert into TEXT_TEST
(NAME)
Values
('MULLER');
Insert into TEXT_TEST
(NAME)
Values
('MÜLLER');
Insert into TEXT_TEST
(NAME)
Values
('PAUL HERNANDEZ');
Insert into TEXT_TEST
(NAME)
Values
('CHRISTOPHER Phil');
COMMIT;
--Now there is an alternative solution that is there, instead of thee Oracle Text which is just a plain function given below (and it seems to work neat for my simple need of removing diacritical characters effect in search)
--I need to evaluate which is better given my specific needs -the function below or Oracle Text.
CREATE OR REPLACE FUNCTION remove_dia(p_value IN VARCHAR2, p_doUpper IN VARCHAR2 := 'Y')
RETURN VARCHAR2 DETERMINISTIC
IS
OUTPUT_STR VARCHAR2(4000);
begin
IF (p_doUpper = 'Y') THEN
OUTPUT_STR := UPPER(p_value);
ELSE
OUTPUT_STR := p_value;
END IF;
OUTPUT_STR := TRANSLATE(OUTPUT_STR,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ', 'AAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy');
RETURN (OUTPUT_STR);
end;
--now I query for which name stats with a P%:
--Below query gets me unexpected result of one row as I am using Oracle Text where each word is parsed for search using CONTAINS...
SQL> select * from text_test where contains(name,'P%')>0;
NAME
PAUL HERNANDEZ
CHRISTOPHER Phil
--Below query gets me the right and expected result of one row...
SQL> select * from text_test where name like 'P%';
NAME
PAUL HERNANDEZ
--Below query gets me the right and expected result of one row...
SQL> select * from text_test where remove_dia(name) like remove_dia('P%');
NAME
PAUL HERNANDEZMy entire need was only to be able to do a search that bypasses diacritical characters. To implement Oracle Text for that reason, I am wondering if that was the right choice! More so when I am now finding that the functionality of LIKE is not available in Oracle Text - the Oracle text search are based on tokens or words and they are different from output of the LIKE operator. So may be should I have just used a simple function like below and used that for my purpose instead of using Oracle Text:
This function (remove_dia) just removes the diacritical characters and may be for my need this is all that is needed. Can someone help to review that given my need I am better of not using Oracle Text? I need to continue using the functionality of Like operator and also need to bypass diacritical characters so the simple function that I have meets my need whereas Oracle Text causes a change in behaviour of search queries.
Thanks,
OrauserNIf all you need is LIKE functionality and you do not need any of the complex search capabilities of Oracle Text, then I would not use Oracle Text. I would create a function-based index on your name column that uses your function that removes the diacritical marks, so that your searches will be faster. Please see the demonstration below.
SCOTT@orcl_11gR2> CREATE TABLE TEXT_TEST
2 (NAME VARCHAR2(255 BYTE))
3 /
Table created.
SCOTT@orcl_11gR2> Insert all
2 into TEXT_TEST (NAME) Values ('muller')
3 into TEXT_TEST (NAME) Values ('müller')
4 into TEXT_TEST (NAME) Values ('MULLER')
5 into TEXT_TEST (NAME) Values ('MÜLLER')
6 into TEXT_TEST (NAME) Values ('PAUL HERNANDEZ')
7 into TEXT_TEST (NAME) Values ('CHRISTOPHER Phil')
8 select * from dual
9 /
6 rows created.
SCOTT@orcl_11gR2> CREATE OR REPLACE FUNCTION remove_dia
2 (p_value IN VARCHAR2,
3 p_doUpper IN VARCHAR2 := 'Y')
4 RETURN VARCHAR2 DETERMINISTIC
5 IS
6 OUTPUT_STR VARCHAR2(4000);
7 begin
8 IF (p_doUpper = 'Y') THEN
9 OUTPUT_STR := UPPER(p_value);
10 ELSE
11 OUTPUT_STR := p_value;
12 END IF;
13 RETURN
14 TRANSLATE
15 (OUTPUT_STR,
16 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ',
17 'AAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy');
18 end;
19 /
Function created.
SCOTT@orcl_11gR2> show errors
No errors.
SCOTT@orcl_11gR2> CREATE INDEX text_test_remove_dia_name
2 ON text_test (remove_dia (name))
3 /
Index created.
SCOTT@orcl_11gR2> set autotrace on explain
SCOTT@orcl_11gR2> select * from text_test
2 where remove_dia (name) like remove_dia ('mü%')
3 /
NAME
muller
müller
MULLER
MÜLLER
4 rows selected.
Execution Plan
Plan hash value: 3139591283
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 2131 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| TEXT_TEST | 1 | 2131 | 2 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | TEXT_TEST_REMOVE_DIA_NAME | 1 | | 1 (0)| 00:00:01 |
Predicate Information (identified by operation id):
2 - access("SCOTT"."REMOVE_DIA"("NAME") LIKE "REMOVE_DIA"('mü%'))
filter("SCOTT"."REMOVE_DIA"("NAME") LIKE "REMOVE_DIA"('mü%'))
Note
- dynamic sampling used for this statement (level=2)
SCOTT@orcl_11gR2> select * from text_test
2 where remove_dia (name) like remove_dia ('P%')
3 /
NAME
PAUL HERNANDEZ
1 row selected.
Execution Plan
Plan hash value: 3139591283
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 2131 | 2 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| TEXT_TEST | 1 | 2131 | 2 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | TEXT_TEST_REMOVE_DIA_NAME | 1 | | 1 (0)| 00:00:01 |
Predicate Information (identified by operation id):
2 - access("SCOTT"."REMOVE_DIA"("NAME") LIKE "REMOVE_DIA"('P%'))
filter("SCOTT"."REMOVE_DIA"("NAME") LIKE "REMOVE_DIA"('P%'))
Note
- dynamic sampling used for this statement (level=2)
SCOTT@orcl_11gR2> -
Oracle Text Search Enabling, Content Server does not start
We are trying to enable Oracle Text Search in UCM 11g that uses 11g Database. We followed instructions to add parameter 'SearchIndexEngine=OracleTextSearach' to config.cfg and restart content server. Content server doesn't come back up with the following error showing up:
Are there any extra steps to follow to enable Search Indexer Engine?
<Apr 27, 2015 4:50:29 PM PDT> <Error> <oracle.ucm.idccs> <UCM-CS-050021> <Oracle WebCenter Content failed to initialize inside its servlet environment.>
<Apr 27, 2015 4:50:29 PM PDT> <Error> <oracle.ucm.idccs> <UCM-CS-000001> <general exception
intradoc.common.ServiceException:
at intradoc.server.IdcServerManager.init(IdcServerManager.java:259)
at intradoc.idcwls.IdcServletRequestUtils.initializeServer(IdcServletRequestUtils.java:627)
at intradoc.idcwls.IdcServletRequestUtils.initializeServer(IdcServletRequestUtils.java:457)
at intradoc.idcwls.IdcIntegrateWrapper.initializeServer(IdcIntegrateWrapper.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at idcservlet.common.IdcMethodHolder.invokeMethod(IdcMethodHolder.java:88)
at idcservlet.common.ClassHelperUtils.executeMethodEx(ClassHelperUtils.java:305)
at idcservlet.common.ClassHelperUtils.executeMethodWithArgs(ClassHelperUtils.java:278)
at idcservlet.ServletUtils.initializeContentServer(ServletUtils.java:1259)
at idcservlet.ServletUtils.startAndConfigureServer(ServletUtils.java:531)
at idcservlet.ServletUtils.initializeAllServers(ServletUtils.java:460)
at idcservlet.IdcFilter.initContentServer(IdcFilter.java:181)
at idcservlet.IdcFilter.init(IdcFilter.java:156)
at weblogic.servlet.internal.FilterManager$FilterInitAction.run(FilterManager.java:343)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.FilterManager.loadFilter(FilterManager.java:96)
at weblogic.servlet.internal.FilterManager.preloadFilters(FilterManager.java:57)
at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1877)
at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3174)
at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1527)
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:489)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:427)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:201)
at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:249)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:427)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:28)
at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:672)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:212)
at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:59)
at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:187)
at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:379)
at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:52)
at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200)
at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:31)
at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)
at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:170)
at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:124)
at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:181)
at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:97)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused By: intradoc.data.DataException: !csSearchIndexerEngineNotExist,DATABASE.ORACLETEXTSEARCH
at intradoc.shared.CommonSearchConfig.createDataException(CommonSearchConfig.java:2580)
at intradoc.shared.CommonSearchConfig.setCurrentConfig(CommonSearchConfig.java:1041)
at intradoc.shared.CommonSearchConfig.init(CommonSearchConfig.java:178)
at intradoc.server.SearchIndexerUtils.initSearchIndexerConfig(SearchIndexerUtils.java:64)
at intradoc.server.IdcSystemLoader.initSearchIndexerConfig(IdcSystemLoader.java:1338)
at intradoc.server.IdcSystemLoader.loadCaches(IdcSystemLoader.java:1255)
at intradoc.server.IdcServerManager.init(IdcServerManager.java:141)
at intradoc.idcwls.IdcServletRequestUtils.initializeServer(IdcServletRequestUtils.java:627)
at intradoc.idcwls.IdcServletRequestUtils.initializeServer(IdcServletRequestUtils.java:457)
at intradoc.idcwls.IdcIntegrateWrapper.initializeServer(IdcIntegrateWrapper.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at idcservlet.common.IdcMethodHolder.invokeMethod(IdcMethodHolder.java:88)
at idcservlet.common.ClassHelperUtils.executeMethodEx(ClassHelperUtils.java:305)
at idcservlet.common.ClassHelperUtils.executeMethodWithArgs(ClassHelperUtils.java:278)
at idcservlet.ServletUtils.initializeContentServer(ServletUtils.java:1259)
at idcservlet.ServletUtils.startAndConfigureServer(ServletUtils.java:531)
at idcservlet.ServletUtils.initializeAllServers(ServletUtils.java:460)
at idcservlet.IdcFilter.initContentServer(IdcFilter.java:181)
at idcservlet.IdcFilter.init(IdcFilter.java:156)
at weblogic.servlet.internal.FilterManager$FilterInitAction.run(FilterManager.java:343)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.FilterManager.loadFilter(FilterManager.java:96)
at weblogic.servlet.internal.FilterManager.preloadFilters(FilterManager.java:57)
at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1877)
at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3174)
at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1527)
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:489)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:427)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:201)
at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:249)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:427)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:28)
at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:672)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:212)
at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:59)
at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:80)
at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:187)
at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:379)
at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:52)
at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200)
at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:31)
at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)
at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:170)
at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:124)
at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:181)
at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:97)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
>
<Apr 27, 2015 4:50:29 PM PDT> <Error> <ServletContext-> <BEA-000000> <There is an initialization failure during start up of UCM.>
<Apr 27, 2015 4:50:29 PM PDT> <Error> <ServletContext-> <BEA-000000> <Could not start server of type 'server' at default relative web root URL 'cs'.
javax.servlet.ServletException: Could not start up IDC server deployment.
at idcservlet.ServletUtils.initializeContentServer(ServletUtils.java:1268)
at idcservlet.ServletUtils.startAndConfigureServer(ServletUtils.java:531)
at idcservlet.ServletUtils.initializeAllServers(ServletUtils.java:460)
at idcservlet.IdcFilter.initContentServer(IdcFilter.java:181)
at idcservlet.IdcFilter.init(IdcFilter.java:156)
Truncated. see log file for complete stacktrace
Caused By: java.io.IOException: Oracle WebCenter Content failed to initialize inside its servlet environment.
at intradoc.idcwls.IdcIntegrateWrapper.initializeServer(IdcIntegrateWrapper.java:139)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
Truncated. see log file for complete stacktrace
Caused By: intradoc.common.ServiceException:
at intradoc.server.IdcServerManager.init(IdcServerManager.java:259)
at intradoc.idcwls.IdcServletRequestUtils.initializeServer(IdcServletRequestUtils.java:627)
at intradoc.idcwls.IdcServletRequestUtils.initializeServer(IdcServletRequestUtils.java:457)
at intradoc.idcwls.IdcIntegrateWrapper.initializeServer(IdcIntegrateWrapper.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Truncated. see log file for complete stacktrace
Caused By: intradoc.data.DataException: !csSearchIndexerEngineNotExist,DATABASE.ORACLETEXTSEARCH
at intradoc.shared.CommonSearchConfig.createDataException(CommonSearchConfig.java:2580)
at intradoc.shared.CommonSearchConfig.setCurrentConfig(CommonSearchConfig.java:1041)
at intradoc.shared.CommonSearchConfig.init(CommonSearchConfig.java:178)
at intradoc.server.SearchIndexerUtils.initSearchIndexerConfig(SearchIndexerUtils.java:64)
at intradoc.server.IdcSystemLoader.initSearchIndexerConfig(IdcSystemLoader.java:1338)
Truncated. see log file for complete stacktraceCan you let us know the config.cfg entry in your Environment for SearchIndexerEngineName.
Is it SearchIndexerEngineName= DATABASE.ORACLETEXTSEARCH ? It should be as below
SearchIndexerEngineName=ORACLETEXTSEARCH -
Oracle Text Index Error - DRG-10700: preference does not exist: CTXSYS.DEFA
Hi we are having a Oracle 11g db.And we have installed CTX SYS package and provided the grants to the required schema.
But while creating the oracle text index, following error is thrown:
ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-20000: Oracle Text error:
DRG-10700: preference does not exist: CTXSYS.DEFAULT_LEXER
ORA-06512: at "CTXSYS.DRUE", line 160
ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 365
Following grnats are given :
GRANT EXECUTE ON CTXSYS.CTX_DDL TO <schema_name>;
GRANT APPOWN TO <schema_name>;
GRANT CTXAPP TO <schema_name>;
I have verifyed the ctxsys.CTX_PREFERENCES view which is having an entry as :
SELECT PRE_OWNER, PRE_NAME
FROM CTXSYS.CTX_PREFERENCES
WHERE PRE_NAME = 'DEFAULT_LEXER';
The Result is :
PRE_OWNER PRE_NAME
SYS DEFAULT_LEXER
Can you please assist if there is a way to update the permission on this DEFAULT_LEXER preference to set the PRE_OWNER as CTXSYS ?
ThanksThat's odd. If I run the same query I see:
SQL> SELECT PRE_OWNER, PRE_NAME
2 FROM CTXSYS.CTX_PREFERENCES
3 WHERE PRE_NAME = 'DEFAULT_LEXER';
PRE_OWNER PRE_NAME
CTXSYS DEFAULT_LEXERAre all your defaults like thsi? What do you see if you run
select pre_owner, pre_name from ctxsys.ctx_preferences where pre_name like 'DEFAULT%';
It would be easy enough to update the underlying table DR$PREFERENCES to fix the owner, but who knows what else might be wrong.
Has this database been updated from a 9i installation by any chance? -
How do I know what Oracle products I need installed for Oracle Text to work
I get the following errors from a VB application when trying to access the Oracle Text procedures:
Oracle Error: -20000
ORA-20000: Oracle Text error:
ORA-02074: cannot ROLLBACK in a distributed transaction
ORA-06512: at "CTXSYS.CTX_DOC", line 483
ORA-02074: cannot SET SAVEPOINT in a distributed transaction
DRG-10816: display/highlight call failed
ORA-02074: cannot SET SAVEPOINT in a distributed transaction
I need to resolve this ASAPOracle Text is part of the database. Try the quick start sample (http://otn.oracle.com/products/text/x/Samples/Quick_Start/index.html) and check if a sql-contains statement works.
Maybe you are looking for
-
i need help
-
Transport error of request Standard Infocube to HANA Optimised Infocube migration
Hi , Migration of Standard info cube to Hana optimized info cube done successfully in Dev System,but while transporting that request in PRD system error was coming and error log as follows-
-
I recently reformatted the hard drive in a PC and did not unlink from sync account prior to doing so. The machine continues to be present when i pull down the menu option "Tabs From Other Computers"., even though I have not installed Firefox on the f
-
Hi All! I have a flash email form that sends an email using PHP, but when I recieve the email in my inbox there are just the headers and then a HTML code type of text. The text looks like this..... Name: <TEXTFORMAT LEADING=\"15\"><P ALIGN=\"LEFT\"><
-
Revaluation with transactions 891 893
Dear All I have made a revaluation with the transaction type 893 and 891. In case of increasing the value of an asset I have used 891 and for decreasing I have used 893. Since it was a revaluation as per IFRS all the depreciation had to be written of