ORACLE TEXT LEXER PREFERENCE(一)
介紹完Oracle全文索引的FILTER屬性,繼續(xù)介紹Oracle的LEXER屬性。
Oracle全文索引的LEXER屬性用于處理各種不同的語言。最基本的英文使用BASE_FILTER,而如果需要使用中文則可以使用CHINESE_VGRAM_LEXER或CHINESE_LEXER。
這篇文章簡(jiǎn)單說明BASIC_LEXER屬性。BASIC_LEXER屬性支持多種語言,比如英語、德語、荷蘭語、挪威語、瑞典語等等。
BASIC_LEXER除了支持多種語言,還可以設(shè)置多種屬性。比如這個(gè)例子中介紹的索引的大小寫設(shè)置:
SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));
表已創(chuàng)建。
SQL> INSERT INTO T VALUES (1, 'This is a example for the basic lexer');
已創(chuàng)建?1 行。
SQL> INSERT INTO T VALUES (2, 'And we make a example for a mixed spell indexs.');
已創(chuàng)建?1 行。
SQL> INSERT INTO T VALUES (3, 'So the word in UPPER format must be query in UPPER');
已創(chuàng)建?1 行。
SQL> INSERT INTO T VALUES (4, 'And Mixed Spell Word must be Query in Mixed.');
已創(chuàng)建?1 行。
SQL> COMMIT;
提交完成。
SQL> CREATE INDEX IND_T_DOCS ON T (DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('LEXER CTXSYS.BASIC_LEXER');
索引已創(chuàng)建。
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');
索引已創(chuàng)建。
SQL> SELECT ID FROM T WHERE CONTAINS(DOCS, 'MIXED') > 0;
未選定行
SQL> SELECT ID FROM T WHERE CONTAINS(DOCS, 'Mixed') > 0;
ID
----------
4
如果不進(jìn)行設(shè)置,Oracle在建立索引時(shí)會(huì)將所有的字母變?yōu)榇髮憽H绻M(jìn)行了設(shè)置,可以使索引區(qū)分大小寫,
總結(jié)
以上是生活随笔為你收集整理的ORACLE TEXT LEXER PREFERENCE(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ORACLE TEXT FILTER P
- 下一篇: ORACLE TEXT LEXER PR