我也有类似
的问题What part of this Solr-Sunspot setup am I missing?
但是,问题是,我已经应用了所选解决方案并将我的可搜索字段设为text
,但它仍然无法用于中间字符串。它只适用于完整的字符串。
例如: - User.search (1, "adam")
会给我亚当的结果,但这不会奏效:
User.search (1, "ad")
我的代码
用户模型
searchable do
text :firstname
text :lastname
text :email
integer :some_id
end
搜索方法
def self.search(obj, search_text)
solr_search do
keywords search_text
with(:some_id, obj.id)
end
end
除此之外,我还尝试了以下代码:
def self.search(obj, search_text)
solr_search do
keywords ''
any_of do
with(:email, search_text)
with(:firstname, search_text)
with(:lastname, search_text)
end
with(:some_id, obj.id)
end
end
但是,我在rails console中遇到以下错误:
> User.search(obj, "ad")
Sunspot :: UnrecognizedFieldError:没有为名为'电子邮件'
的用户配置字段答案 0 :(得分:0)
配置为text
的字段将full-text
可供搜索。其他(Scalar
)字段integer, boolean, time and string
可用于scope queries
。
在您的可搜索区块中,您只配置了文本字段。
searchable do
text :firstname
text :lastname
text :email
integer :some_id
end
并且您的搜索方法对未在可搜索块中定义的标量字段执行搜索。
any_of do
with(:email, search_text)
with(:firstname, search_text)
with(:lastname, search_text)
end
为了使这项工作,你必须在可搜索的块中将email,firstname和lastname字段定义为字符串。
searchable do
text :firstname
text :lastname
text :email
string :firstname
string :lastname
string :email
integer :some_id
end