思维狮身人面像搜索中的条件"或"

Vic*_*tor 1 ruby-on-rails thinking-sphinx

使用RoR 2.3.8.

这是我的控制器代码:

class CitiesController < ApplicationController
  def show
    @city = City.find(params[:id])
    @shops = Shop.search @city.name, {
      :conditions => {:country => @city.country && (:city => @city.name || :state => @city.state)},
      :page => params[:page],
      :per_page => 100
      }
  end
end
Run Code Online (Sandbox Code Playgroud)

:conditions => {:country => @city.country && (:city => @city.name || :state => @city.state)}显然是行不通的,因为我只是想解释什么,我想实现的.

:city并且:state将是Spots表格中的列,而不是Cities表格.我希望结果返回其中一个满足条件.但不知道该怎么做.

谢谢.

pat*_*pat 8

Tass说得对 - 用你的TS搜索电话,看起来应该是这样的:

def show
  @city = City.find(params[:id])
  @shops = Shop.search "#{@city.name} @country #{@city.country} (@city #{@city.name} | @state #{@city.state})",
    :match_mode => :extended,
    :page       => params[:page],
    :per_page   => 100
    }
end
Run Code Online (Sandbox Code Playgroud)

你会注意到我已经设置了匹配模式 - 如果你正在使用:conditions参数,Thinking Sphinx会自动执行此操作- 但是在手动构建查询时,你需要自己设置它.