如果现在在我的应用程序上设置 Thinking Sphinx
一切正常
直到我决定使用 Thinking Sphinx 进行条件查询
PartPriceRecord.search "50002" ,:conditions => { :supplier_id =>
"supp50002" },:star => true
它向我报告了上述错误
ThinkingSphinx::SphinxError: index part_price_record_core: query
error: no field 'supplier_id' found in schema
甚至看到 Ryan Bates Screencast ,他似乎也使用为该列定义的“ has ”方法实现了条件子句
就像是
has :author_id
阅读 Pate Allen 的一篇文章(向下滚动到底部)
:with should be used for attribute filters, and :conditions for
field queries.
所以用子句改变我上面的代码
PartPriceRecord.search "PartNumber50002",:with => {:supplier_id =>
"supp50002" },:star => true
我没有得到错误的结果,因为我可以在数据库中看到 part_number "PartNumber50002" 的 "supplier_id" 记录
现在我很困惑
为什么会出现上述错误以及“字段”和“属性”之间的根本区别是什么
谁能帮忙
顺便说一句,我的索引定义
define_index do
indexes part_number
has supplier_id
end
sphinx_scope(:supplier) { |name|
{:conditions => {:supplier_id => supplier}}
}