oracle全文索引之STOPLIST_2_EMPTY_STOPLIST

jolly10發表於2009-05-25

這篇文章介紹Oracle全文索引的STOPLIST屬性。介紹的是EMPTY_STOPLIST。

[@more@]如果索引的文章比較短小,或者認為文章中所有的內容都是關鍵性的,那麼可以選擇EMPTY_STOPLIST。使用EMPTY_STOPLIST表示系統中不包含任何的停用詞,只要文章中出現的單詞,都是可以索引到的。

下面看個簡單的例子,對於預設停用詞‘THIS’和‘A’,使用預設的停用詞無法查詢到這些資訊,只有使用EMPTY_STOPLIST才行。

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

表已建立。

SQL> INSERT INTO T VALUES (1, 'This is a simple stoplist example.');

已建立 1 行。

SQL> INSERT INTO T VALUES (2, 'This example is about to empty_stoplist.');

已建立 1 行。

SQL> COMMIT;

提交完成。

SQL> CREATE INDEX IND_T_DOCS ON T(DOCS) INDEXTYPE IS CTXSYS.CONTEXT;

索引已建立。

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

ID DOCS
---------- --------------------------------------------------
1 This is a simple stoplist example.

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

未選定行

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

未選定行

SQL> DROP INDEX IND_T_DOCS;

索引已丟棄。

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

索引已建立。

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

ID DOCS
---------- --------------------------------------------------
1 This is a simple stoplist example.

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

ID DOCS
---------- --------------------------------------------------
1 This is a simple stoplist example.

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

ID DOCS
---------- --------------------------------------------------
2 This example is about to empty_stoplist.
1 This is a simple stoplist example.

例子十分簡單,就不再詳細描述了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-1022469/,如需轉載,請註明出處,否則將追究法律責任。

相關文章