gpt4 book ai didi

ruby-on-rails - 在多个条件下使用 pg textsearch

转载 作者:行者123 更新时间:2023-11-29 14:03:16 25 4
gpt4 key购买 nike

我目前使用 postgres 文本搜索功能来搜索具有特定成分的食谱

Recipe.includes("ingredients").where("ingredients.name @@ :query", :query => query)

但我想做的是能够搜索多个成分查询名称,根据情况匹配全部或任何。

即鉴于这两个食谱及其成分

三明治 => 培根、奶酪、番茄意大利面 => 培根,橄榄

使用id喜欢的这些自定义方法来定义

Recipe.search_by_any("培根番茄") => 三明治和意大利面Recipe.search_by_all("培根番茄") => 三明治

如何在关联的记录列上使用 pg textsearch 来实现这一点?

我不想使用 PGSearch gem,因为它会给我一些奇怪的错误

最佳答案

部分答案:

最简单的搜索是匹配任何成分的搜索。使用内部联接来过滤您想要的结果。

def self.search_by_any(query)
ingredients_query = query.split(' ').join('|') # Convert queries like "Bacon Tomatoes" to "Bacon|Tomatoes"

Recipe.joins(:ingredients).includes(:ingredients).where("ingredients.name @@ to_tsquery(:ingredients_query)", :ingredients_query => ingredients_query)
end

search_by_all 方法会稍微复杂一些。如果没有其他人提出好的建议,我稍后再看一下。

关于ruby-on-rails - 在多个条件下使用 pg textsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16733287/

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