我的 Rails 应用程序中的 Thinking Sphinx 存在严重问题。我的应用程序规格如下:
- 导轨 3.2.6
- 红宝石 1.9.3
- 狮身人面像 2.0.4 (r3135)
- 思考狮身人面像 2.0.12
在我的应用程序中,我有一个Page
模型和一个Offer
模型,并且pages
有很多offers
. 模型中定义的索引Page
如下所示:
define_index do
#other indexes defined here
#...
has offers.width, as: :offers_width
has offers.height, as: :offers_height
has offers.price, as: :offers_price
set_property delta: true
end
然后我在Page
模型上进行搜索,pages
根据搜索查询和条件选择哪里。但是,当我尝试使用:with
过滤器时,Sphinx 给了我错误的结果。
当我只使用一个过滤器时,例如price
or width
,结果还可以,但是当我尝试组合过滤器时,例如price and width
,我得到的结果包含带有给定price
OR的报价width
,而不是price
AND width
。
当我使用范围搜索时,大多数时间:with
参数都是范围,而不仅仅是整数值。
编辑 1
查询即时使用:
Page.search Riddle.escape(query), conditions: conditions, with: has_cond, star: true, per_page: Page.per_page, page: page
其中has_cond是:
{:offers_height=>[175..200], :offers_width=>[175..200], :offers_price=>[10..80]}
它仍然给我提供任何报价在该范围内具有高度或任何报价在该范围内具有宽度或与价格相同的页面。