Ruby on rails 思考Sphinx分面搜索实现示例?

Ruby on rails 思考Sphinx分面搜索实现示例?,ruby-on-rails,thinking-sphinx,faceted-search,Ruby On Rails,Thinking Sphinx,Faceted Search,我正在创建一个存储库类型的rails 3站点。 我已经安装了Thinking Sphinx并在我的网站上运行,因为我可以输入URL,比如localhost:3000/articles?search=test&page=2,它将返回预期的结果 我对Rails(以及web开发人员)是新手;我想我可以管理模型和控制器方面的问题,但到目前为止,这些观点让我感到困惑。我有一个侧边栏,我想用作搜索界面。我最接近的例子是(作为侧边栏部分的一部分呈现): :get do%> 搜索方法在我的articles#i

我正在创建一个存储库类型的rails 3站点。 我已经安装了Thinking Sphinx并在我的网站上运行,因为我可以输入URL,比如
localhost:3000/articles?search=test&page=2
,它将返回预期的结果

我对Rails(以及web开发人员)是新手;我想我可以管理模型和控制器方面的问题,但到目前为止,这些观点让我感到困惑。我有一个侧边栏,我想用作搜索界面。我最接近的例子是(作为侧边栏部分的一部分呈现):

:get do%>
搜索方法在我的articles#index controller中,当我在浏览器指向该页面(路由为
/articles
)时对其进行测试时,它会按预期工作,但使用以下奇怪的url:
localhost:3000/articles?utf8=✓&搜索=测试&提交=搜索
。当浏览器第一次指向根路径时,不会发生任何事情

因此,我认为这些是我需要解决的主要问题:

  • 编辑-已解决(见下文)
  • 我应该将搜索方法移动到它们自己的控制器,还是它们应该是文章控制器的一部分?目前,这篇文章将是唯一的索引模型
  • 编辑-已解决(见下文)
  • 有人有使用Rails 3和Thinking Sphinx的切面搜索视图的好示例代码吗?正如我所说的,我是一个新手,对视图实现浏览的文档感到有点慌乱。然而,只要代码相当完整,我就相当擅长阅读和解释代码
  • 提前谢谢

    已解决:

  • 在尝试搜索之前,如何使“搜索”按钮调用索引方法?(我已经通过将
    @search
    替换为
    文章路径
    解决了这个问题)

  • 使用
    解决将分页
    ,我以前遇到过问题,但现在似乎正在工作

  • 哎,, 这是在我切换到solr之前我的站点工作的摘录

    产品有很多类别,我们告诉斯芬克斯,我们希望将它们作为方面进行索引

    class Product < ActiveRecord::Base {    
        has_many :categorisations, :dependent => :destroy
        has_many :categories, :through => :categorisations        
    
     define_index do
        indexes product_name,
        indexes description
        indexes categories(:name), :as => :category,:facet => true      
     end 
    }
    
    类产品:销毁
    有许多:类别,:到=>:分类
    定义索引do
    索引产品名称,
    索引描述
    索引类别(:name),:as=>:category,:facet=>true
    结束
    }
    
    结果控制员

    class ResultsController < ApplicationController
      def index
          @facets = Product.facets params[:qt], :conditions => {:category => params[:category}},:page => params[:page], :per_page => 20
          @products = @facets.for
      end
    end
    
    class ResultsController{:category=>params[:category}},:page=>params[:page],:per_page=>20
    @products=@facets.for
    结束
    结束
    
    然后在视图中,您可以执行以下操作

    <% @facets.each do |facet, facet_options| %>
      <span><%= facet %></span>
      <ul>
      <% facet_options.each do |option, count| %>
        <li><%= link_to "#{option} (#{count})",
          :params => {facet => option, :page => 1} %></li>
      <% end %>
      </ul>
    <% end %>
    
    
    
    • {facet=>option,:page=>1}%>
    <% @facets.each do |facet, facet_options| %>
      <span><%= facet %></span>
      <ul>
      <% facet_options.each do |option, count| %>
        <li><%= link_to "#{option} (#{count})",
          :params => {facet => option, :page => 1} %></li>
      <% end %>
      </ul>
    <% end %>