1

我正在尝试创建一个 Oracle 文本索引,以便对数据库中的某些西班牙语文本列进行 FTS 查询。根据 Oracle 文档,我需要创建一个 LEXER 和一个 WORDLIST 来启用词干和模糊查询:

exec ctxsys.ctx_ddl.create_preference ('cust_lexer','BASIC_LEXER');
exec ctxsys.ctx_ddl.set_attribute ('cust_lexer','base_letter','YES');
exec ctxsys.ctx_ddl.set_attribute ('cust_lexer','index_stems','SPANISH');
exec ctxsys.ctx_ddl.create_preference('cust_wordlist','BASIC_WORDLIST');
exec ctxsys.ctx_ddl.set_attribute('cust_wordlist','stemmer','AUTO');
exec ctxsys.ctx_ddl.set_attribute('cust_wordlist','fuzzy_match','AUTO');

然后使用这些首选项创建索引:

CREATE INDEX NOMBREACCION_CTX ON ACCION(NOMBRE_ACCION) INDEXTYPE IS CTXSYS.CONTEXT parameters ('LEXER cust_lexer WORDLIST cust_wordlist');

当我使用词干运算符 ($) 运行查询时,出现以下错误:

ORA-20000: Oracle Text error:
DRG-00100: internal error, arguments : [50935],[drpn.c],[1113],[],[]
DRG-00100: internal error, arguments : [50935],[drpnw.c],[651],[],[]
DRG-00100: internal error, arguments : [51002],[drwa.c],[597],[],[]
DRG-00100: internal error, arguments : [51029],[drwas.c],[498],[ACCION],[]
DRG-51023: stemmer file cannot be opened
20000. 00000 -  "%s"
*Cause:    The stored procedure 'raise_application_error'
           was called which causes this error to be generated.  
*Action:   Correct the problem as described in the error message or contact
           the application administrator or DBA for more information.

根据 Oracle docs stem 功能应该适用于西班牙语:http ://docs.oracle.com/cd/B28359_01/text.111/b28304/amultlng.htm#CCREF2294

此外,这似乎不是 Oracle XE 中缺少的功能:http: //docs.oracle.com/cd/E17781_01/doc.112/e21743/toc.htm#XERDM105

如果我将“西班牙语”更改为“英语”,它可以正常工作。有没有人设法在 Oracle Text 中设置西班牙语词干?

4

1 回答 1

1

经过一些研究,我发现西班牙语词干在完整的 Oracle 安装中运行良好。对于词干提取,Oracle 需要一个在 Oracle XE 安装中不可用的字典。Oracle XE 仅安装英语和日语词典。

于 2017-07-24T22:49:58.583 回答