日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ORACLE TEXT LEXER PREFERENCE(四)

發(fā)布時(shí)間:2024/8/26 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORACLE TEXT LEXER PREFERENCE(四) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文繼續(xù)介紹Oracle全文索引的LEXER屬性,這篇文章介紹Oracle多語(yǔ)言全文索引DEFAULT_LEXER


其實(shí)這篇文章應(yīng)該放在LEXER屬性的開(kāi)頭部分,不過(guò)我的測(cè)試一直和Oracle文檔上的描述不符,所以一直沒(méi)有寫(xiě)這篇文章,今天找了個(gè)環(huán)境又測(cè)試了一下,基本上可以推出肯定的答案,因此,這才補(bǔ)上這篇。

要是DEFAULT_LEXER其實(shí)并不復(fù)雜,但是確實(shí)最常使用的,無(wú)論是明確給出DEFAULT_LEXER屬性還是不指定LEXER屬性,Oracle都會(huì)使用DEFAULT_LEXER作為LEXER的默認(rèn)屬性。

但是DEFAULT_LEXER并不是一個(gè)真正意義上的LEXEROracle9i的文檔上描述的是,如果數(shù)據(jù)庫(kù)在建立的時(shí)候指定的是中文則DEFAULT_LEXERCHINESE_VGRAM_LEXER,如果是英文,則DEFAULT_LEXERBASIC_LEXER

但是我在很多Oracle9i的環(huán)境下進(jìn)行測(cè)試,發(fā)現(xiàn)無(wú)論按照時(shí)指定中文還是英文,DEFAULT_LEXER的值都是BASIC_LEXER

SQL> CONN SYSTEM/MANAGER@DEMO2已連接。
SQL> SELECT NAME, VALUE$ FROM SYS.PROPS$ WHERE NAME = 'NLS_LANGUAGE';

NAME VALUE$
---------------------------------------- --------------------
NLS_LANGUAGE SIMPLIFIED CHINESE

SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));

表已創(chuàng)建。

SQL> INSERT INTO T VALUES (1, '一個(gè)中文例子,測(cè)試默認(rèn)的語(yǔ)法屬性是否可以正常識(shí)別中文。');

已創(chuàng)建?1?行。

SQL> INSERT INTO T VALUES (2, '根據(jù)Oracle的文檔,數(shù)據(jù)庫(kù)的默認(rèn)語(yǔ)言是中文會(huì)采用CHINA_VGRAM_LEXER');

已創(chuàng)建?1?行。

SQL> COMMIT;

提交完成。

SQL> CREATE INDEX IND_T_DOCS ON T(DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('LEXER CTXSYS.DEFAULT_LEXER');

索引已創(chuàng)建。

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, '中文') > 0;

未選定行

SQL> SELECT PRE_NAME, PRE_OBJECT FROM CTX_PREFERENCES WHERE PRE_NAME = 'DEFAULT_LEXER';

PRE_NAME PRE_OBJECT
------------------------------ ------------------------------
DEFAULT_LEXER BASIC_LEXER

SQL> SELECT * FROM V$VERSION;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production PL/SQL Release 9.2.0.4.0 - Production
CORE 9.2.0.3.0 Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production

看來(lái)Oracle的文檔在這里的描述有問(wèn)題,或者Oracle的實(shí)現(xiàn)上和文檔不一致。

但是測(cè)試發(fā)現(xiàn)Oracle10.2.0中,如果按照的時(shí)候選擇了中文,則DEFAULT_LEXER屬性的值為CHINESE_VGRAM_LEXER

SQL> CONN YANGTK/YANGTK@YTK已連接。
SQL> SELECT NAME, VALUE$ FROM SYS.PROPS$ WHERE NAME = 'NLS_LANGUAGE';

NAME VALUE$
---------------------------------------- --------------------
NLS_LANGUAGE SIMPLIFIED CHINESE

SQL> CREATE TABLE T (ID NUMBER, DOCS VARCHAR2(1000));

表已創(chuàng)建。

SQL> INSERT INTO T VALUES (1, '一個(gè)中文例子,測(cè)試默認(rèn)的語(yǔ)法屬性是否可以正常識(shí)別中文。');

已創(chuàng)建?1?行。

SQL> INSERT INTO T VALUES (2, '根據(jù)Oracle的文檔,數(shù)據(jù)庫(kù)的默認(rèn)語(yǔ)言是中文會(huì)采用CHINA_VGRAM_LEXER');

已創(chuàng)建?1?行。

SQL> COMMIT;

提交完成。

SQL> CREATE INDEX IND_T_DOCS ON T(DOCS) INDEXTYPE IS CTXSYS.CONTEXT
2 PARAMETERS ('LEXER CTXSYS.DEFAULT_LEXER');

索引已創(chuàng)建。

SQL> SELECT * FROM T WHERE CONTAINS(DOCS, '中文') > 0;

ID DOCS
---------- ------------------------------------------------------------------
1?
一個(gè)中文例子,測(cè)試默認(rèn)的語(yǔ)法屬性是否可以正常識(shí)別中文。
2?
根據(jù)Oracle的文檔,數(shù)據(jù)庫(kù)的默認(rèn)語(yǔ)言是中文會(huì)采用CHINA_VGRAM_LEXER

SQL> SELECT PRE_NAME, PRE_OBJECT FROM CTX_PREFERENCES WHERE PRE_NAME = 'DEFAULT_LEXER';

PRE_NAME PRE_OBJECT
------------------------------ ------------------------------
DEFAULT_LEXER CHINESE_VGRAM_LEXER

SQL> SELECT * FROM V$VERSION;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production

總結(jié)

以上是生活随笔為你收集整理的ORACLE TEXT LEXER PREFERENCE(四)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。