Ruby on rails 对太阳黑子的搜索有很多联系
我不明白我怎么能用太阳黑子来搜索一个有很多联系的地方。用户从选择标记字段中选择技能,结果返回与技能ID匹配的记录 为了记录在案,当我按下搜索按钮时,我得到了以下信息:Ruby on rails 对太阳黑子的搜索有很多联系,ruby-on-rails,sunspot,Ruby On Rails,Sunspot,我不明白我怎么能用太阳黑子来搜索一个有很多联系的地方。用户从选择标记字段中选择技能,结果返回与技能ID匹配的记录 为了记录在案,当我按下搜索按钮时,我得到了以下信息: SOLR Request (294.1ms) [ path=select parameters={fq: ["type:User"], q: ["4"], fl: "* score", qf: "", defType: "edismax", start: 0, rows: 30} ] q:[“4”]提到了数字4,它是我搜索的技
SOLR Request (294.1ms) [ path=select parameters={fq: ["type:User"], q: ["4"], fl: "* score", qf: "", defType: "edismax", start: 0, rows: 30} ]
q:[“4”]
提到了数字4,它是我搜索的技能的ID。当我被要求拿回一些东西时,我没有得到任何结果。当我提交时没有参数,我会将所有用户作为结果返回
到目前为止,我所做的工作和发现的都可以在下面找到。任何正确方向的提示或帮助都将不胜感激
(如果您需要任何其他信息,请告诉我,我将立即添加)
我的结构如下:
用户模型中的(user.rb)
技能模型中的(skill.rb)
数据库模式:
t.string "name"
t.string "category"
t.string "slug"
t.integer "user_id"
t.integer "skill_id"
用户技能模型中的(User\u skill.rb)
数据库模式:
t.string "name"
t.string "category"
t.string "slug"
t.integer "user_id"
t.integer "skill_id"
在我的搜索控制器中,我有以下代码段:
@search = Sunspot.search(User) do
fulltext params[:s_skills]
end
@users = @search.results
params[:s_skills]是从选择标记中提取的技能ID:
<%= select_tag :s_skills, options_for_select(Skill.all.collect{|e| [e.name,e.id]}, skills), {:id => 'e2', :multiple => true, :placeholder => "Input skills", class: "input-search2" } %>
'e2',:multiple=>true,:placeholder=>“输入技能”,类:“Input-search2”}%>
它接受技能的名称并返回其ID。您实际上没有在已索引的
技能ID
字段中搜索
您必须添加以下内容:
User.search do
fulltext params[:free_text] #<-- YOU DON'T NEED THIS, PROBABLY?
with(:skill_ids, params[:s_skills]) if params[:s_skills]
end
User.search do
全文参数[:free_text]#谢谢您的帮助,不过它确实会显示与任一ID匹配的记录。例如,如果我搜索Ruby和Java,当我想看到同时拥有Ruby和Java技能的用户时,它会向我显示具有Ruby或Java技能的用户。有没有办法调整这个?修正了。我只是用“所有的”。万分感谢
User.search do
fulltext params[:free_text] #<-- YOU DON'T NEED THIS, PROBABLY?
with(:skill_ids, params[:s_skills]) if params[:s_skills]
end