ORACLE TEXT LEXER PREFERENCE(一)
2012-03-31 15:01
381 查看
介绍完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全文索引的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 TEXT LEXER PREFERENCE(二)
- ORACLE TEXT LEXER PREFERENCE(三)
- ORACLE TEXT LEXER PREFERENCE(四)
- ORACLE TEXT DATASTORE PREFERENCE(七)
- ORACLE TEXT FILTER PREFERENCE(一)
- ORACLE TEXT FILTER PREFERENCE(二)
- ORACLE TEXT FILTER PREFERENCE(三)
- ORACLE TEXT FILTER PREFERENCE(四)
- ORACLE TEXT DATASTORE PREFERENCE(二)
- ORACLE TEXT DATASTORE PREFERENCE(三)
- ORACLE TEXT DATASTORE PREFERENCE(四)
- ORACLE TEXT DATASTORE PREFERENCE(五)
- ORACLE TEXT DATASTORE PREFERENCE(六)
- Using Text_IO To Read Files in Oracle D2k
- Oracle动态性能表-(2)-V$SQLTEXT
- Oracle Berkeley DB XML fulltext检索中的bug
- Oracle Error - "OCIEnvCreate failed with return code -1 but error message text was not available".
- Oracle各种类型的运用|char、varchar、text和nchar、nvarchar、ntext的区别
- Android开发 EditTextPreference 和 ListPreference的summary值动态修改
- Pro Android学习笔记(五九):Preferences(3):EditText和Ringtone Preference