在PostgreSQL中搜索保存为哈希的字段中的匹配记录?

时间:2017-11-11 06:53:21

标签: ruby-on-rails regex postgresql hash

我的活动记录SearchSuggestion有一个title:text字段,用于在单个hash中存储不同语言的值,如下所示:

#<SearchSuggestion :id 1, link: "/search/shoes", title: {"en"=>"Women's shoes", "ko"=>"여성 신발", "ru"=>"Женская Обувь", "fr"=>"Chaussures De Femme"}>

我正在以下列方式获取与给定输入匹配的记录:所有记录'title字段中包含的所有给定单词,仅从每个单词的开头按以下方式开始:

query = params[:q].split(" ").map{|s| s.prepend('(?:.*\m')}.map{|s| s.concat(')')}.join('')
SearchSuggestion.where("title ~* ?", query).limit(10).pluck(:title)

问题是这给了我整个领域的匹配,而我只想要当前所选语言的匹配。因此,如果我的语言使用相同的字母 - 我会得到无关的结果,例如 - 如果我开始输入“cha”,这将通过查找法国建议作为匹配来返回“女鞋”。此外,如果我输入“en” - 我会得到所有现有记录,因为它们与“en”语言的键匹配。

有什么方法可以指定我只想在其中搜索的哈希键吗?

0 个答案:

没有答案
相关问题