gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:32:27 27 4
gpt4 key购买 nike

我正在整理一个存储库类型的 rails 3 站点。
我安装了 Thinking Sphinx 并在我的网站上工作,因为我可以输入类似 localhost:3000/articles?search=test&page=2 的网址。它将返回预期的结果。

我是 Rails 的新手(以及一般的 Web 开发人员);我想我可以管理它的模型和 Controller 方面,但到目前为止的观点让我很难过。我有一个侧边栏,我想用作搜索界面。我最接近的是这个(呈现为侧边栏部分的一部分):

<% form_tag @search, :method => :get do %> 
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search"%>
<% end %>

搜索方法在我的文章#index Controller 中,当我在浏览器指向该页面(路由为 /articles )进行测试时,它按预期工作,但使用这个奇怪的 url: localhost:3000/articles?utf8=✓&search=test&commit=Search .当浏览器第一次指向根路径时,什么也没有发生。

所以,我认为这些是我需要解决的主要问题:
  • 编辑 - 解决(见下文)
  • 我应该将搜索方法移动到他们自己的 Controller ,还是应该将它们作为文章 Controller 的一部分?目前,文章将是唯一索引的模型。
  • 编辑 - 解决(见下文)
  • 有没有人有使用 Rails 3 和 Thinking Sphinx 的分面搜索 View 的任何好的示例代码?就像我说的,我是一个新手,对 View 实现浏览的文档有点慌张。但是,只要代码相当完整,我就相当擅长阅读和解释代码。

  • 提前致谢!

    解决了:
  • 在尝试搜索之前,如何让“搜索”按钮调用索引方法? (我通过用 @search 替换 articles_path 解决了这个问题)。
  • 使用 will_paginate 解决,我以前遇到过问题,但现在似乎可以工作了。
  • 最佳答案

    嘿,
    这是我的网站在切换到 solr 之前如何工作的摘录

    产品有很多类别,我们告诉 sphinx 我们想将它们索引为 facet

    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
    }

    结果 Controller
    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

    然后在 View 中你可以做类似的事情
    <% @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 %>

    关于ruby-on-rails - 思考 Sphinx 分面搜索实现示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5239982/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com