添加一个可搜索的字段似乎没有影响 - 太阳黑子

时间:2015-08-06 18:24:01

标签: ruby-on-rails solr sunspot

ruby 2.1.5
rails 3.2.3

在我的gemfile中,我有:

gem 'sunspot_rails'
gem 'sunspot_solr'

在我的ticket.rb中,我添加了(到可搜索的部分):

  string :customer_reference

我将新的ticket.rb上传到登台服务器并执行以下操作:

bundle install
bundle exec rake RAILS_ENV=staging  db:migrate
chmod -R -- g+w /home/app
RAILS_ENV=staging RAILS_GROUPS=assets bundle exec rake assets:precompile
sudo reboot
echo \"DEPLOY SIDEKIQ RELOAD $(date)\" >> log/sidekiq.log
bundle exec sidekiq -d -L log/sidekiq.log -e staging
RAILS_ENV=staging bundle exec rake sunspot:solr:start
screen -d -m sh -c 'cd /home/app && RAILS_ENV=staging bundle exec rake sunspot:solr:reindex'

当我使用customer_reference进行搜索时,它没有找到它。当我查看solr日志文件时,我发现了以下内容:

INFO: [development] webapp=/solr path=/select params={fl=*+score&sort=requested_date_start_d+desc&start=0&q=139170&qf=services_text+inventories_text+requested_date_start_text+number_text+customer_phone_text+sp_name_text+specialties_text+status_text+ticket_type_text+executor_full_name_text+customer_full_name_text+customer_info_full_name_text+ticket_profile_name_text&wt=ruby&fq=type:Ticket&rows=20&defType=edismax} hits=1 status=0 QTime=27 

customer_reference不在那里。这是我第一次使用solr,我正在尝试维护这段代码。我有什么想法我做错了吗?

Attempt1:

我重新启动了我的说服服务器并执行了以下操作:

RAILS_ENV=staging RAILS_GROUPS=assets bundle exec rake assets:precompile
echo \"DEPLOY SIDEKIQ RELOAD $(date)\" >> log/sidekiq.log
bundle exec sidekiq -d -L log/sidekiq.log -e staging
RAILS_ENV=staging bundle exec rake sunspot:solr:start
RAILS_ENV=staging bundle exec rake sunspot:reindex[,,true]

我等到它完成(数据库不大)。我在终端视图中没有看到任何错误。仍然没有工作

补充评论:

我重启了服务器,所以solr没有运行。我做了以下事情:

rake sunspot:solr:start

它正常启动并给了我一个PID

然后我做了:

rake sunspot:solr:reindex

这个过程开始了,它给了我一个指示器,告诉我%完成,时间过去等等,并且完成没有任何错误。

我没有被要求确认是否要重新索引。

我仍然没有得到结果

解决方案:

我挣扎了几天。我甚至删除了solr和cache目录,重新生成了solr配置并重新编制索引,但无济于事。解决方案非常简单。我改变了

string :customer_reference

text :customer_reference

并重新编入索引。它工作正常。我不知道为什么我不能在可追溯部分使用字符串,但显然我不能。

1 个答案:

答案 0 :(得分:0)

由于Solr将您的数据库编入索引以搜索其自己的独立数据库,因此在您使用太阳黑子reindex之前,任何对配置的更改都不会反映在Solr中:

bundle exec rake sunspot:reindex

请注意,根据您的数据集大小,这可能需要非常很长时间(某些全文数据库需要数月才能完全重新编制索引),并且Solr在重新编制索引时搜索中不会有任何记录商场。您可以通过批量重新索引来缓解这些问题(在上面的链接中进一步说明):

bundle exec rake sunspot:reindex[500,MyModel]

在这种情况下,您需要运行批量重新索引MyModel.count/500次,但Solr中一次只能使用500条记录。