ruby-on-rails - 太阳黑子通过电子邮件完全匹配搜索

标签 ruby-on-rails ruby solr sunspot

你好,今天我遇到了 Sunspot Solr 的这个问题,我无法让它用于精确的电子邮件搜索,我已经尝试了几个小时,最后我得出了这个解决方案,但它仍然不能作为精确匹配。

例如,我需要输入一封电子邮件 mushos32@yahoo.gr 并给我 1 个结果,如果我写 mushos32@yahoo.g 或除原始邮件之外的任何其他组合,它应该不会返回任何内容

我现在的代码是这样的

model
 searchable do
 text :email
 String :email

end

Controller

 def search


 @users = User.search do
  keywords params[:query]
 end.results

 respond_to do |format|
  format.html { render :action => "index" }
  format.xml  { render :xml => @users }
 end
end

查看/用户/显示

  <%= form_tag search_users_path, :method => :get do %>
<p>
  <%= text_field_tag :query, params[:search] %>
  <%= submit_tag "Search" ,:email => nil %>

</p>
<% if @users.empty? %>
    <p>Your search did not return any results. </p>
<% else %>
<% for user in @users %>
    <tr>

      <td><%= link_to user.name, user %> <%= link_to user.surname, user %></td>
      <%= hidden_field_tag :direction, params[:direction] %>
      <%= hidden_field_tag :sort, params[:sort] %>
      <td><%= image_tag user.photo.url(:thumb) %></td>
      <td><%= link_to "Connect", friendships_path(:friend_id => user), :method => :post %></td>
    </tr>
<%end%>

你能帮帮我吗?我已经尝试重新索引,重新启动 solr 服务器,但似乎没有用

最佳答案

由于您只想在该字段上进行精确匹配,因此最简单的解决方案是将其设为字符串字段而不是文本字段:

class User < ActiveRecord::Base
  searchable do
    string :email
  end
end

这样您就可以像这样在您的 Controller 中搜索用户:

def search
  @users = User.search do
    with(:email, params[:query])
  end.results

  respond_to do |format|
    format.html { render :action => "index" }
    format.xml  { render :xml => @users }
  end
end

参见 Sunspot documentation获取更多信息。

关于ruby-on-rails - 太阳黑子通过电子邮件完全匹配搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23661887/

相关文章:

ruby - 为什么 Middleman 在安装后不包含 rb-inotify 和 therubyracer gem?

search - Solr 搜索不返回精确匹配

java - Solr:创建一个具有多个值的默认值的多值字段?

ruby-on-rails - Rails Admin - 如何添加图标?

ruby-on-rails - 如何在 Rails 应用程序中创建 "template"记录?

ruby-on-rails - 使用 Chef,我如何只运行一次 Rails 迁移?

ruby-on-rails - simple_form 'form-inline' 不工作

ruby - #new 中的 ArgumentError,子类枚举器

ruby-on-rails - 哈希 to_json 和返回不保留哈希作为键?

solr - django-haystack:无法将文档添加到Solr:[原因:未找到错误404]