【问题标题】:Oracle Text use Base_Letter setting when creating indexOracle Text 在创建索引时使用 Base_Letter 设置
【发布时间】:2021-01-27 13:55:06
【问题描述】:

在我的数据库中有一个产品名称。我们需要能够搜索它以使其不区分重音,即搜索“Dorthey”仍将返回“Dórthéy”。

我们已经在创建一个 Oracle Text 索引。将重音字符转换为基本字母的设置称为base_letter,需要开启。

这就是索引的创建方式。

create index ITITLE_PSIPRODUCTTITLE on PSI.PSIPRODUCTTITLE(PT_TITLE) INDEXTYPE IS ctxsys.context

创建索引时是否开启此设置,如何开启?还是base_letter设置在别处开启?

感谢任何帮助!

【问题讨论】:

    标签: sql oracle indexing diacritics oracle-text


    【解决方案1】:

    您必须定义一个BASIC_LEXER,将BASE_LETTER 设置为true

    您在创建文本索引时使用BASIC_LEXER,如示例所示

    begin
    ctx_ddl.create_preference (
    'my_lexer', 'BASIC_LEXER' );
    ctx_ddl.set_attribute( 'my_lexer',
    'BASE_LETTER', 'true' );
    end;
    /
    
    create table tab as
    select 1 id, 'schön' txt from dual union all
    select 2 id, 'schoen' txt from dual union all
    select 3 id, 'schon' txt from dual union all
    select 4 id, 'schnix' txt from dual;
    
    create index tab_ttx on tab(txt) indextype is ctxsys.context
    parameters ( 'lexer my_lexer' );
    
    
    select * from tab where contains(txt,'schon')>0;
    
            ID TXT   
    ---------- ------
             1 schön 
             3 schon 
    

    请检查ALTERNATE_SPELLING和/或OVERRIDE_BASE_LETTER等其他参数,如blog post所示

    或者咨询甲骨文documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-02
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 1970-01-01
      • 2011-03-05
      • 2020-09-04
      相关资源
      最近更新 更多