Rails 使用全文查询记录
Rails query records using full text
我想知道是否可以使用可能包含或不包含可查询文本的字符串来执行 Rails ActiveRecord 查询。
例如,假设我有一个带有 name
列的 Person
模型,包含名称为 Bob
和 Fred
的记录。我想知道是否有某种方法可以解析以下内容:
I am having lunch with Bob and Martha today. Fred is busy.
有了这个,Bob
和 Fred
记录将被返回,而 Martha 不会,因为该名称的记录不存在。我想查询本身看起来像 Person.where('name IN (?)', ['Bob', 'Fred'])
?
在寻找答案时,我遇到了模糊搜索,但看起来更像是找到与特定查询最接近的匹配项 (catz
-> cats
)。这是正确的,还是我实际上可以使用模糊搜索来搜索长字符串查询?
我觉得这个问题,在一个非常高的层次上是知道哪些措辞是名字,哪些不是。
例如...在:
I am having lunch with Bob and Martha today. Fred is busy.
有3个名字。我们知道,因为我们知道 Fred
、Bob
和 Martha
是名称。
如果某人的名字是 Lunch
怎么办?
在这方面,我认为将句子拆分成一个包含所有单词的数组,然后进行查询,其中 name
是任何单词是一个不错的选择。
所以,在I am having lunch with Bob and Martha today. Fred is busy
中,你可以得到一个句子数组:
word_array = %w(I am having lunch with Bob and Martha today. Fred is busy)
然后执行查询以获取名称为以上任何一项的记录:
Person.where('name IN (?)', word_array)
还有一件事:您可能希望 use gsub 在转换为数组之前先删除逗号 (,) 和句点 (.)。
希望这对您有所帮助...
我想知道是否可以使用可能包含或不包含可查询文本的字符串来执行 Rails ActiveRecord 查询。
例如,假设我有一个带有 name
列的 Person
模型,包含名称为 Bob
和 Fred
的记录。我想知道是否有某种方法可以解析以下内容:
I am having lunch with Bob and Martha today. Fred is busy.
有了这个,Bob
和 Fred
记录将被返回,而 Martha 不会,因为该名称的记录不存在。我想查询本身看起来像 Person.where('name IN (?)', ['Bob', 'Fred'])
?
在寻找答案时,我遇到了模糊搜索,但看起来更像是找到与特定查询最接近的匹配项 (catz
-> cats
)。这是正确的,还是我实际上可以使用模糊搜索来搜索长字符串查询?
我觉得这个问题,在一个非常高的层次上是知道哪些措辞是名字,哪些不是。
例如...在:
I am having lunch with Bob and Martha today. Fred is busy.
有3个名字。我们知道,因为我们知道 Fred
、Bob
和 Martha
是名称。
如果某人的名字是 Lunch
怎么办?
在这方面,我认为将句子拆分成一个包含所有单词的数组,然后进行查询,其中 name
是任何单词是一个不错的选择。
所以,在I am having lunch with Bob and Martha today. Fred is busy
中,你可以得到一个句子数组:
word_array = %w(I am having lunch with Bob and Martha today. Fred is busy)
然后执行查询以获取名称为以上任何一项的记录:
Person.where('name IN (?)', word_array)
还有一件事:您可能希望 use gsub 在转换为数组之前先删除逗号 (,) 和句点 (.)。
希望这对您有所帮助...