【问题标题】:Ignore accentuation in a MySQL query using Ruby on Rails使用 Ruby on Rails 忽略 MySQL 查询中的重音
【发布时间】:2011-05-05 11:33:15
【问题描述】:

是否可以使用忽略重音的“=”或“like”操作执行 MySQL 查询?

例子:

select * from address where name like "Rua Tabapua"

返回

Rua Tabapuá 鲁阿塔巴普昂 Rua Tabapuà

等等……

是否可以在不使用 find_by_sql 的情况下使用 Ruby on Rails ActiveRecord API 来做到这一点?

谢谢,

鲁本

【问题讨论】:

    标签: mysql ruby-on-rails activerecord non-ascii-characters


    【解决方案1】:

    您可以通过使用 UTF-8 和类似查询来做到这一点

    【讨论】:

    • 举个例子怎么样?
    【解决方案2】:

    即使在MySQL中可能有一些方法可以做到这一点,如果你想做全文搜索,也许使用像Sphinx和Thinking Sphinx这样的全文索引引擎会更容易。

    当通过 Sphinx 进行索引时,您可以对其进行配置,使其忽略重音字符等...

    【讨论】:

      【解决方案3】:

      这听起来像是一个 mysql 配置问题。 完成此查询后检查 mysql.log 文件。你会看到查询是按照你的意愿进行的,但是 mysql 返回的结果比你预期的要多。 在 mysql 控制台中尝试查询,你会看到同样的事情发生。

      所有这些都在 Ruby on Rails 的下一层。

      【讨论】:

      • 好的,但我究竟如何配置 MySQL 以忽略重音?我如何在没有 find_by_sql 的情况下执行这种查询?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 2011-10-15
      • 1970-01-01
      相关资源
      最近更新 更多