我使用CTXRULE对某些文本进行分类,但AB& B工作和AT& T不起作用。请支持我:
这是我的搜索文本
SQL> select text from test_lexer_special;
TEXT
--------------------
AB&B
{AT&T}
AT&T
SQL>
我如何创建索引
SQL> EXEC CTX_DDL.CREATE_INDEX_SET('test_ctxrule_1');
PL/SQL procedure successfully completed.
SQL> EXEC CTX_DDL.CREATE_PREFERENCE ('testmy_lexer', 'BASIC_LEXER');
PL/SQL procedure successfully completed.
SQL> EXEC CTX_DDL.SET_ATTRIBUTE ('testmy_lexer', 'PRINTJOINS', '&');
PL/SQL procedure successfully completed.
SQL> CREATE INDEX test_ctxrule_index1 ON test_lexer_special (text)
2 INDEXTYPE IS CTXSYS.CTXRULE
3 PARAMETERS ('INDEX SET test_ctxrule_1 LEXER testmy_lexer STOPLIST CTXSYS.EMPTY_STOPLIST');
Index created.
SQL>
这有效
SQL> SELECT * FROM test_lexer_special WHERE MATCHES(text, 'ab&b')> 0;
TEXT
--------------------
AB&B
SQL>
这不起作用
SQL> SELECT * FROM test_lexer_special WHERE MATCHES(text, 'at&t')> 0;
no rows selected
SQL> select token_text,token_extra from DR$test_ctxrule_index1$I;
TOKEN_TEXT TOKEN_EXTRA
-------------------- --------------------
AB {B}
SQL>
感谢。