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
并重新编入索引。它工作正常。我不知道为什么我不能在可追溯部分使用字符串,但显然我不能。
答案 0 :(得分:0)
由于Solr将您的数据库编入索引以搜索其自己的独立数据库,因此在您使用太阳黑子reindex之前,任何对配置的更改都不会反映在Solr中:
bundle exec rake sunspot:reindex
请注意,根据您的数据集大小,这可能需要非常很长时间(某些全文数据库需要数月才能完全重新编制索引),并且Solr在重新编制索引时搜索中不会有任何记录商场。您可以通过批量重新索引来缓解这些问题(在上面的链接中进一步说明):
bundle exec rake sunspot:reindex[500,MyModel]
在这种情况下,您需要运行批量重新索引MyModel.count/500
次,但Solr中一次只能使用500条记录。