2011-08-18 70 views
2

我遇到了我的太阳黑子和solr问题。在开发中它像charme一样工作,但在生产中,我从rails生产日志中得到以下错误:太阳黑子solr未定义字段类型

RSolr :: RequestError(Solr响应:未定义字段类型): app/controllers/search_controller.rb:7:in `索引'

我想它与schema.xml有关。但我对solr很陌生。那么有人能帮助我吗?

OK:
控制器

def index 
unless params[:q].blank? 
    @search = Question.search do 
    fulltext params[:q] 
    end 
    @results = @search.results 

else 
    @results = nil 
end 
@searchterm = params[:q] 

模型(问题)

...

searchable do 
    text :title 
    text :content 
end 
+3

显示您的模型和控制器代码,这几天我们是短水晶球:) –

回答

6

这听起来像你的生产Solr的实例未使用太阳黑子的schema.xml

type字段应在太阳黑子的标准schema.xml中定义,它用于索引对象的型号名称,以供以后用于过滤搜索。看到一条错误消息,说明type未定义,这意味着您使用的是除太阳黑子以外的schema.xml

这可能是因为您正在使用您在服务器上安装Solr的方法使用其他一些示例或默认配置集。如果可以,请详细说明如何设置生产Solr服务器。

+0

我有同样的问题,我通过这种方法安装了solr。 https://github.com/sunspot/sunspot/wiki/Configure-Solr-on-Ubuntu%2C-the-quickest-way 我实际上是否必须将我的conf目录复制到/ usr/share/solr? – kayluhb

+0

kayluhb:是的,没错。 –

1

请确保在您的schema.xml中将字段类型设置为required =“true”,否则重新索引将不包含索引数据中的字段“type”。

<field name="type" stored="true" type="string" multiValued="true" indexed="true" required="true" /> 
+0

谢谢..它为我工作。 –

3

对于Solr的4.7,从your_app/Solr的/ conf目录复制schema.xml中和solrconfig.xml中到/ opt/Solr的/ Solr的/ collection1(或任何你Solr的路径),如果仍无法正常工作,确保你的配置/ sunspot.yml是一样的东西:

生产: Solr的: 主机名:本地主机端口 :8983 LOG_LEVEL:警告 路径:/ Solr的/ collection1 #read_timeout:2 #open_timeout:0.5 建议创建另一个核心(my_core)f rom solr网络界面,将schema.xml和solrconfig.xml复制到该文件夹​​并指向/ solr/my_core的路径

1

对我来说,它是在Heroku插件Websolr仪表板中,默认配置设置为blacklight,并且我有将其更改为太阳黑子。

+0

这个答案真的需要更多的深度,你能否详细说明。 –

+0

如果您在Heroku和太阳黑子宝石中使用Websolr插件,那么如果您进入Websolr插件仪表板,则只需点击配置选项卡中的表示黑色而不是黑色的按钮即可。不知道你需要什么其他信息。 – bjacobs

+0

你去那里了,在动作之间使用>并设置好。 –