Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在文本中查找数据库元素?_Ruby On Rails_Ruby_Postgresql_Search - Fatal编程技术网

Ruby on rails 如何在文本中查找数据库元素?

Ruby on rails 如何在文本中查找数据库元素?,ruby-on-rails,ruby,postgresql,search,Ruby On Rails,Ruby,Postgresql,Search,假设我有一个食品应用程序。它是使用RoR和Postgresql构建的。在其中,用户可以在文本字段中添加receipe: 预热烤箱至华氏350度(摄氏175度) 将黄油、白糖和红糖搅成奶油状,直至光滑。一次打一个鸡蛋,然后加入香草。将小苏打溶解在热水中。和盐一起加入面糊。拌入面粉、巧克力片和坚果。用大汤匙滴在无油的锅上 在预热的烤箱中烘焙约10分钟,或直到边缘呈棕色 提交表单时,我希望识别所有成分,并查看是否与数据库中的表成分匹配 换句话说,我想要一个函数,它可以输入用户编写的文本,并输出对象“成

假设我有一个食品应用程序。它是使用RoR和Postgresql构建的。在其中,用户可以在文本字段中添加receipe:

预热烤箱至华氏350度(摄氏175度)

将黄油、白糖和红糖搅成奶油状,直至光滑。一次打一个鸡蛋,然后加入香草。将小苏打溶解在热水中。和盐一起加入面糊。拌入面粉、巧克力片和坚果。用大汤匙滴在无油的锅上

在预热的烤箱中烘焙约10分钟,或直到边缘呈棕色

提交表单时,我希望识别所有成分,并查看是否与数据库中的表成分匹配

换句话说,我想要一个函数,它可以输入用户编写的文本,并输出对象“成分”列表,这些对象“成分”出现在我的数据库的表成分中(例如,黄油、白糖、鸡蛋……)

我真的不知道怎么做。我唯一的想法是,将文本按单词分割,然后逐个进行查询,将它们搜索到表格中。但我担心这会非常缓慢。 如果一个成分由两个或更多的单词组成,或者有打字错误,或者有破折号、大写字母、复数怎么办

有什么想法吗?是否有任何gem或内置库可以完成这项工作


谢谢你的帮助

假设您在
input
变量中有文本,您可以使用一个正则表达式来完成

首先,构建数组或所有成分(在现实生活中,这将是一个数据库查询)

现在,在的帮助下,我们可以选择所有匹配项:

input.scan(Regexp.union(ingredients))
#⇒ ["butter", "white sugar", "eggs"]

可能您希望正则表达式不区分大小写,等等,但主要的想法是。

Hi,在Stackoverflow上询问库建议是离题的。我相信,没有图书馆就可以解决你的需求,这一点在一个问题中问起来有点太多。很难决定为什么投票结束这个问题:1)要求图书馆的范围太广2)从另一端尝试:加载所有已知的成分,并试着在食谱中找到它们。这假设没有输入错误和一些输入规范化(例如,使其全部为小写)。但在一般情况下(配方输入,成分输出),这听起来像是在NLP领域(自然语言处理)。也就是说,题外话“太宽泛了”。对不起,我不知道要求图书馆是一种亵渎。。。我不会再这样做了!非常感谢。我当时没想到,但这完全有道理!这正是我想要的。
input.scan(Regexp.union(ingredients))
#⇒ ["butter", "white sugar", "eggs"]