oracleÈ«ÎÄË÷ÒýÖ®LEXER
½éÉÜÍêOracleÈ«ÎÄË÷ÒýµÄFILTERÊôÐÔ£¬¼ÌÐø½éÉÜOracleµÄLEXERÊôÐÔ¡£
OracleÈ«ÎÄË÷ÒýµÄLEXERÊôÐÔÓÃÓÚ´¦Àí¸÷ÖÖ²»Í¬µÄÓïÑÔ¡£×î»ù±¾µÄÓ¢ÎÄʹÓÃBASE_FILTER£¬¶øÈç¹ûÐèҪʹÓÃÖÐÎÄÔò¿ÉÒÔʹÓÃCHINESE_VGRAM_LEXER»òCHINESE_LEXER¡£
ÕâƪÎÄÕ¼òµ¥ËµÃ÷BASIC_LEXERÊôÐÔ¡£BASIC_LEXERÊôÐÔÖ§³Ö¶àÖÖÓïÑÔ£¬±ÈÈçÓ¢Óï¡¢µÂÓï¡¢ºÉÀ¼ÓŲÍþÓï¡¢ÈðµäÓïµÈµÈ¡£
BASIC_LEXER³ýÁËÖ§³Ö¶àÖÖÓïÑÔ£¬»¹¿ÉÒÔÉèÖöàÖÖÊôÐÔ¡£±ÈÈçÕâ¸öÀý×ÓÖнéÉܵÄË÷ÒýµÄ´óСдÉèÖãº
SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));
±íÒÑ´´½¨¡£
SQL> INSERT INTO T VALUES (1, 'This is a example for the basic lexer');
ÒÑ´´½¨ 1 ÐС£
SQL> INSERT INTO T VALUES (2, 'And we make a example for a mixed spell indexs.');
ÒÑ´´½¨ 1 ÐС£
SQL> INSERT INTO T VALUES (3, 'So the word in UPPER format must be query in UPPER');
ÒÑ´´½¨ 1 ÐС£
SQL> INSERT INTO T VALUES (4, 'And Mixed Spell Word must be Query in Mixed.');
ÒÑ´´½¨ 1 ÐС£
SQL> COMMIT;
Ìá½»Íê³É¡£
SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('LEXER CTXSYS.BASIC_LEXER');
Ë÷ÒýÒÑ´´½¨¡£
SQL> SELECT ID from T WHERE CONTAINS(DOCS, 'MIXED') > 0;
ID
----------
4
2
SQL> DROP INDEX IND_T_DOCS;
Ë÷ÒýÒѶªÆú¡£
SQL> CONN CTXSYS/CTXSYS@YANGTK
ÒÑÁ¬½Ó¡£
SQL> BEGIN
2 CTX_DDL.CREATE_PREFERENCE('TEST_BASIC_LEXER', 'BASIC_LEXER');
3 CTX_DDL.SET_ATTRIBUTE('TEST_BASIC_LEXER', 'MIXED_CASE', 'YES');
4 END;
5 /
PL/SQL ¹ý³ÌÒѳɹ¦Íê³É¡£
SQL> CONN YANGTK/YANGTK@YANGTK
ÒÑÁ¬½Ó¡£
SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('LEXER CTXSYS.TEST_BASIC_LEXER');
Ë÷ÒýÒÑ´´½¨¡£
SQL> SELECT ID from T WHERE CONTAINS(DOCS, 'MIXED') > 0;
δѡ¶¨ÐÐ
SQL> SELECT ID from T WHERE CONTAINS(DOCS, 'Mixed') > 0;
ID
----------
4
Èç¹û²»½øÐÐÉèÖã¬OracleÔÚ½¨Á¢Ë÷Òýʱ»á½«ËùÓеÄ×Öĸ±äΪ´óд¡£Èç¹û½øÐÐÁËÉèÖ㬿ÉÒÔʹË÷ÒýÇø·Ö´óСд
½éÉÜÍêOracleÈ«ÎÄË÷ÒýµÄBASIC_LEXERÊôÐÔ£¬Õâƪ½éÉÜOracleÖÐÎÄÓï·¨ÊôÐÔCHINESE_LEXERºÍCHINESE_VGRA
Ïà¹ØÎĵµ£º
µÚÒ»²¿·Ö »ù±¾¸ÅÄî
Ò»¡¢ ......
Óöµ½µÄһЩOracleµÄÁãËéÎÊÌ⣺
1¡¢Ê¹ÓÃ×Ô¶¨ÒåÒì³££¬raise_application_error(Òì³£±àºÅ£¬Òì³£ÐÅÏ¢)¡£
A¡¢Òì³£±àºÅ×¢Òâ²»Òª³¬³¤£¬Ò»°ãµ½5λ
B¡¢Òì³£ÐÅÏ¢ÊÇÒ»¸ö×Ö·û´®ÐÅÏ¢
C¡¢ÅäºÏ´æ´¢¹ý³ÌÖÐexceptionʹÓà ......
SQL> create table test2(s1 varchar(10),s2 varchar2(10));
±íÒÑ´´½¨¡£
SQL> insert into test2 values('11','111');
ÒÑ´´½¨ 1 ÐС£
SQL> insert into test2 values('22','222');
ÒÑ´´½¨ 1 ÐС£
SQL> CREATE OR REPLACE PACKAGE test222 AS
2 TYPE t_cursor IS REF CURSOR;
3 procedure p_tes ......
¼ÌÐøÌÖÂÛÈ«ÎÄË÷ÒýµÄDATASTOREÊôÐÔ£¬½éÉÜMULTI_COLUMN_DATASTORE¡£
Èç¹û±»Ë÷ÒýµÄÎÄÕÂÊDZ£´æÔÚÊý¾Ý¿âÖУ¬µ«ÊÇÄÚÈÝ·Ö²¼ÔÚ¶à¸öÁÐÖУ¬ÄÇô¿ÉÒÔͨ¹ý½¨Á¢Ò»¸öMULTI_COLUMN_DATASTOREÀ´Ë÷ÒýÍêÕûµÄÎÄÕ£º
SQL> CREATE TABLE T (ID NUMBER, DOC1 VARCHAR2(4000), DOC2 VARCHAR2(4000), DOC3 VARCHAR2(4000));
±íÒÑ´´½ ......
½éÉÜÍêOracleÈ«ÎÄË÷ÒýµÄDATASTOREÊôÐÔ£¬¼ÌÐø½éÉÜOracleµÄFILTERÊôÐÔ¡£
OracleÈ«ÎÄË÷ÒýµÄFILTERÊôÐÔÖ÷ÒªÊÇÕë¶Ô¾ßÓÐÒ»¶¨¸ñʽµÄÎĵµ£¬Oracle¸ù¾ÝFILTERµÄÉ趨À´¹ýÂËÄÇЩ²»ÊôÓÚÎÄÕÂÄÚÈݵIJ¿·Ö¡£
FILTERÊôÐÔ°üº¬µÄÊôÐÔÓУºCHARSET_FILTER¡¢INSO_FILTER¡¢NULL_FILTER¡¢USER_FILTER¡¢PROCEDURE_FILTER¼¸ÖÖ¡£
ÕâÀïÈÔÈ»´ÓFILTER ......