【问题标题】:Search text in an oracle database for characters like 'a' to match the following characters: 'a', 'à', 'â' and 'ä'在 oracle 数据库中的文本中搜索“a”等字符以匹配以下字符:“a”、“à”、“â”和“ä”
【发布时间】:2017-01-13 03:45:24
【问题描述】:

我有一个包含法语数据的 Oracle 数据库。

我的用户提到他们希望能够找到数据,而不管字符上的重音,所以像这样的词:

  • École 可以通过键入 EcoleÉcole 找到
  • Père-Noël 可以通过键入 Pere-NoelPère-NoelPère-Noël 找到

由于这是一个将在许多列和具有许多行的表上进行的搜索,因此有许多字符可以在法语中具有重音符号,我希望有一种有效的方法来匹配重音符号与非重音版本。

Oracle 是否为此提供任何便利,如果没有,有哪些解决方案可以做到这一点?

【问题讨论】:

    标签: oracle search internationalization


    【解决方案1】:

    查看 Oracle 全文索引 (Oracle Text) 的文档 - 本质上,您需要为此创建自己的词法分析器。

    创建一个简单的全文索引:

    create index fulltext_idx on tab(col) indextype is ctxsys.context; 
    

    更新:使用 auto_lexer 也可能是一个选项(因为它支持法语),请参阅 http://download.oracle.com/docs/cd/B28359_01/text.111/b28304/cdatadic.htm#BHCGJHDH

    【讨论】:

    • 这适用于多列吗?在我的查询中,我正在执行类似的操作:SELECT * FROM CUSTOMERS WHERE upper(FirstName || ';' || LastName || ';' || Adress) LIKE '%ERIC%';
    • 您可以使用用户数据存储将多个列(甚至多个表)组合成一个全文索引 - 参见例如asktom.oracle.com/pls/apex/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 2018-04-09
    • 1970-01-01
    • 2014-03-29
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多