我有product_details表属于类别。 product_details包含id,name,price,discount和category_id等字段,而categories表包含id和name等字段。我正在使用mysql数据库我试图根据category_id进行产品组详细信息。为了进行分组,我提到了https://gist.github.com/f987013b2feec5b28456。但我得到错误以下错误
RSolr::Error::Http - 400 Bad Request
Error: undefined field category_id
我的模型看起来像这样
class ProductDetail < ActiveRecord::Base
belongs_to :category
searchable do
text :name
integer :category_id
end
end
我的控制器看起来像这样
def index
@search_res1=ProductDetail.search do
adjust_solr_params do |params|
params[:group] = true
params[:"group.field"] = "category_id"
params[:"group.format"] = "simple"
end
end.execute
@navurls=@search_res1.results
end
在我的日志文件中,我得到了这样的
RSolr::Error::Http - 400 Bad Request Error: undefined field category_id Request Data: "fq=type%3AProductDetail&fq=category_id_i%3A%281%29&start=0&rows=30&group=true&group.field=category_id&group.format=simple&q=%2A%3A%2A" Backtrace: /home/toshiba/.rvm/gems/ruby-1.9.2-p290/gems/rsolr-1.0.8/lib/rsolr/client.rb:230:in `adapt_response' /home/toshiba/.rvm/gems/ruby-1.9.2-p290/gems/rsolr-1.0.8/lib/rsolr/client.rb:167:in `execute' /home/toshiba/.rvm/gems/ruby-1.9.2-p290/gems/rsolr-1.0.8/lib/rsolr/client.rb:161:in `send_and_receive'
请帮帮我。谢谢。
答案 0 :(得分:1)
这里有两件事:
1.仅在string
字段支持在太阳黑子中分组。因此,请将searchable
块更改为以下内容:
class ProductDetail < ActiveRecord::Base
belongs_to :category
searchable do
text :name
string :category_id_str do
category_id.to_s
end
end
end
2.更改组参数以反映属性名称更改:
def index
@search_res1=ProductDetail.search do
adjust_solr_params do |params|
params[:group] = true
params[:"group.field"] = "category_id_str_s"
params[:"group.format"] = "simple"
end
end.execute
@navurls=@search_res1.results
end
我假设太阳黑子在索引它时会在属性上添加额外的_s
。
答案 1 :(得分:0)
可能在/ usr / share / solr / conf的schema.xml中缺少类型整数?
这是我的例子:
<schema name="sunspot" version="1.0">
<types>
<!-- field type definitions. The "name" attribute is
just a label to be used by field definitions. The "class"
attribute and any other attributes determine the real
behavior of the fieldType.
Class names starting with "solr" refer to java classes in the
org.apache.solr.analysis package.
-->
<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="string" class="solr.StrField" omitNorms="true"/>
<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="tdouble" class="solr.TrieDoubleField" omitNorms="true"/>
<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="boolean" class="solr.BoolField" omitNorms="true"/>
<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="date" class="solr.DateField" omitNorms="true"/>
<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="sdouble" class="solr.SortableDoubleField" omitNorms="true"/>
<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="sfloat" class="solr.SortableFloatField" omitNorms="true"/>
<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="sint" class="solr.SortableIntField" omitNorms="true"/>
<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="slong" class="solr.SortableLongField" omitNorms="true"/>
<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="tint" class="solr.TrieIntField" omitNorms="true"/>
<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="tfloat" class="solr.TrieFloatField" omitNorms="true"/>
<!-- *** This fieldType is used by Sunspot! *** -->
<fieldType name="tdate" class="solr.TrieDateField" omitNorms="true"/>
</types>