关闭

ORACLE TEXT LEXER PREFERENCE(一)

标签: oraclebasicsqlinsertparametersfilter
788人阅读 评论(0) 收藏 举报
分类:

介绍完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在建立索引时会将所有的字母变为大写。如果进行了设置,可以使索引区分大小写,

0
0
查看评论

ORACLE TEXT LEXER PREFERENCE(四)

本文继续介绍Oracle全文索引的LEXER属性,这篇文章介绍Oracle多语言全文索引DEFAULT_LEXER。 其实这篇文章应该放在LEXER属性的开头部分,不过我的测试一直和Oracle文档上的描述不符,所以一直没有写这篇文章,今天找了个环境又测试了一下,基本上可以...
  • liqfyiyi
  • liqfyiyi
  • 2012-03-31 15:05
  • 798

ORACLE TEXT LEXER PREFERENCE(二)

介绍完Oracle全文索引的BASIC_LEXER属性,这篇介绍Oracle中文语法属性CHINESE_LEXER和CHINESE_VGRAM_LEXER。 Oracle全文索引的BASIC属性主要是针对西方英语语系,英语语系的单词是通过空格、标点和回车来分隔的。而中文则需要索引来...
  • liqfyiyi
  • liqfyiyi
  • 2012-03-31 15:03
  • 718

Oracle 中文分词CHINESE_VGRAM_LEXER与CHINESE_LEXER比较

准备工作:  CREATE   TABLE issues (      ID         NUMBER,   ...
  • liqfyiyi
  • liqfyiyi
  • 2014-05-06 11:48
  • 2726

Oracle模糊查询之(5.1认识全文索引之什么是分词[lexer])oracle Text 全文检索功能对中文分词的支持情况

http://hi.baidu.com/lewutian 下面例子在XE中测试通过。 准备工作: CREATE   TABLE issues (     ID       &#...
  • haiross
  • haiross
  • 2013-10-23 17:00
  • 3159

ORACLE TEXT LEXER PREFERENCE(三)

本文继续介绍Oracle全文索引的LEXER属性,这篇文章介绍Oracle多语言全文索引MULTI_LEXER。 如果在Oracle中存储多种语言,那么在建立全文索引的时候就不能只是简单的指定一个LEXER,而是要通过LANGUAGE COLUMN设置MULTI_LEXER...
  • liqfyiyi
  • liqfyiyi
  • 2012-03-31 15:04
  • 766

ORACLE TEXT DATASTORE PREFERENCE(一)

Oracle Text功能十分强大,可是文档上给出的例子总是过于简单,而且可能是为了减少篇幅,不少例子只给出了其中关键的几步,但是对于初学者而言,阅读这样的例子很难对全文索引的创建有一个清晰的了解,而更多的时候可能会使初学者更加迷茫。 打算通过一系列的文章对Oracle全文索引做一个比较详细的...
  • liqfyiyi
  • liqfyiyi
  • 2012-03-31 14:20
  • 669

ORACLE TEXT FILTER PREFERENCE(一)

介绍完Oracle全文索引的DATASTORE属性,继续介绍Oracle的FILTER属性。 Oracle全文索引的FILTER属性主要是针对具有一定格式的文档,Oracle根据FILTER的设定来过滤那些不属于文章内容的部分。 FILTER属性包含的属性有:CHARSET_FILT...
  • liqfyiyi
  • liqfyiyi
  • 2012-03-31 14:37
  • 921

ORACLE TEXT DATASTORE PREFERENCE(四)

这篇文章继续讨论全文索引的DATASTORE属性,介绍URL_DATASTORE。 全文索引可以很方便的索引存储在INTERNET上的信息。在数据库中只需要存储需要索引的文章的URL就可以了。 由于目前讨论的是DATASTORE属性,因此这个例子只索引HTML文章,对于其他需...
  • liqfyiyi
  • liqfyiyi
  • 2012-03-31 14:27
  • 587

ORACLE TEXT DATASTORE PREFERENCE(六)

这篇文章继续讨论全文索引的DATASTORE属性,介绍NESTED_DATASTORE。 全文索引支持将数据存储在多个列中或存储在主子表中,全文索引还支持将数据存储在嵌套表中。嵌套表的例子和主子表比较类似: 首先创建嵌套表对象,并建立嵌套表: SQL> C...
  • liqfyiyi
  • liqfyiyi
  • 2012-03-31 14:36
  • 553

ORACLE TEXT FILTER PREFERENCE(三)

这篇文章继续介绍全文索引的FILTER属性,介绍对不同类型的数据采用不同类型的FILTER属性的方法。 如果Oracle索引的文档包括多种类型,比如doc文件、html文件、pdf文件、纯文本文件等等。由于Oracle不建议对HTML、XML和纯文本文件使用INSO...
  • liqfyiyi
  • liqfyiyi
  • 2012-03-31 14:39
  • 548
    个人资料
    • 访问:2428194次
    • 积分:22159
    • 等级:
    • 排名:第393名
    • 原创:158篇
    • 转载:639篇
    • 译文:1篇
    • 评论:52条
    最新评论