sql - 查询中的 Postgres/Rails 复数问题

标签 sql ruby-on-rails ruby regex postgresql

我在查询中遇到复数问题。我需要的是 ruby​​ 中的一种方法,或者是可以在我搜索时帮助我的 sql。例如:

当我搜索“数组”时 我希望它也返回“array”的结果。

谢谢

最佳答案

您要找的是word stemming .

你真的不能使用一堆正则表达式来提取像英语这样的语言,有太多的异常(exception)。你需要一个大词干词典。

PostgreSQL的全文搜索就提供了这样的字典,我强烈推荐大家使用全文搜索来完成这项工作:

regress=# WITH vals(a,b) AS (VALUES ('goose','geese'), ('query','queries'), ('arrays','array'))
SELECT to_tsquery(a), to_tsvector(b), to_tsquery(a) @@ to_tsvector(b) FROM vals;
 to_tsquery | to_tsvector | ?column? 
------------+-------------+----------
 'goos'     | 'gees':1    | f
 'queri'    | 'queri':1   | t
 'array'    | 'array':1   | t
(3 rows)

尽管您会注意到词干词典并不完美;我希望搜索“鹅”以匹配“鹅”,但事实并非如此。您可能需要增强字典。 PostgreSQL的字典也可以是a bit over-enthusiastic about stemming at times .

另一种方法是使用更大且更易于定制的工具,例如 Apache Solr。

关于sql - 查询中的 Postgres/Rails 复数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12867373/

相关文章:

ruby - Ruby 中的默认哈希值 (Rubykoans.com -> about_hashes.rb)

php - 如何从数据库 MySQL 中的大量记录中删除特定字符?

sql - 将表格中的每一行与其他每一行进行一次且仅一次的比较

javascript - 在 rails 中使用 link_to 呈现部分 onclick 时返回错误 ActionController::UnknownFormat

ruby-on-rails - Ruby on Rails - 如何处理 omniauthable 设计中的陈旧访问 token ?

java - Rails 请求.xhr?不管用

ruby-on-rails - Ruby 升级权限错误(Errno::EACCES)

ruby - 在 Ubuntu 12.10 上安装 Nokogiri (1.5.2) 时出现问题

mysql - 有什么方法可以在 SQL Select 语句中使用 JSON 对象的值吗?

sql - 调用 native 函数“DATEDIFF”时参数计数不正确