gpt4 book ai didi

ruby-on-rails - 如何在 Postgres 数据库中存储正则表达式或搜索词并在 Rails 查询中进行评估?

转载 作者:行者123 更新时间:2023-11-29 13:19:08 26 4
gpt4 key购买 nike

我在 Rails 应用程序中进行数据库查询时遇到问题。我想存储各种搜索词(比如 100 个),然后根据一个值动态评估。我可以找到 Postgres 中 SIMILAR TO 或 ~(正则表达式)的所有示例,在查询中使用固定字符串,而我想从一行中查找查询。

例子:

Table: Post 
column term varchar(256)
(plus regular id, Rails stuff etc)

input = "Foo bar"
Post.where("term ~* ?", input)

因此 term 是 VARCHAR 列名,包含至少一行的数据,其值为:

^foo*$

除非我进行完全匹配(例如术语中的“Foo bar”),否则这永远不会返回结果。

我也想理想地使用像

这样的表达式
(^foo.*$|^second.*$) 

即多个搜索字词,因此它会匹配“Foo Bar”或“搜索示例”。

我认为这与 Ruby 或 ActiveRecord 剥离某些东西有关?或者我走错了路,不能像这样对行数据值使用正则表达式或 SIMILAR TO?

关于如何执行此操作的替代建议也很受欢迎。

最佳答案

Postgres 正则表达式匹配运算符的右边是正则表达式,左边是字符串。查看示例:https://www.postgresql.org/docs/9.3/static/functions-matching.html#FUNCTIONS-POSIX-TABLE

但在您的查询中,您将 term 视为字符串,将“Foo bar”视为正则表达式(您已交换它们)。这就是为什么唯一匹配的术语是完全匹配的原因。尝试:

Post.where("? ~* term", input)

关于ruby-on-rails - 如何在 Postgres 数据库中存储正则表达式或搜索词并在 Rails 查询中进行评估?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44863946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com