I have a rails 4 beta1 application with multiple engines. I installed sunspot_rails gem / 2.0.0.pre.130115 / in my host application. Most of my models lived in engine1. I used them on other engines. After I set sunspot_rails using rake sunspot:solr:run, I got command/task not found. According to the documentation, I found a solution. Here is the link: https://github.com/sunspot/sunspot/wiki/Adding-Sunspot-search-to-Rails-in-5-minutes-or-less
After creating a new record, Solr found it in a search. But when I reindexed my data, the old records were still not found in the search result. In my opinion, reindex did not work. I tried to stop and restart the solr server, restarted my computer several times, but no luck. Any idea?
If you need more information, let me know.
Here are my gems:
Gems included by the bundle:
* actionmailer (4.0.0.beta1)
* actionpack (4.0.0.beta1)
* activemodel (4.0.0.beta1)
* activerecord (4.0.0.beta1)
* activerecord-deprecated_finders (0.0.3)
* activesupport (4.0.0.beta1)
* admin (0.0.1)
* arel (4.0.0.beta2)
* atomic (1.1.7)
* bcrypt-ruby (3.0.1)
* builder (3.1.4)
* bundler (1.3.2)
* coffee-rails (4.0.0.beta1)
* coffee-script (2.2.0)
* coffee-script-source (1.6.2)
* core (0.0.1)
* erubis (2.7.0)
* execjs (1.4.0)
* factory_girl (4.2.0)
* factory_girl_rails (4.2.1)
* fattr (2.2.1)
* frontend (0.0.1)
* highline (1.6.18)
* hike (1.2.2)
* i18n (0.6.4)
* jbuilder (1.0.2)
* jquery-rails (2.2.1)
* json (1.7.7)
* kaminari (0.14.1)
* mail (2.5.3)
* mime-types (1.22)
* minitest (4.7.1)
* multi_json (1.7.2)
* nokogiri (1.5.9)
* options (2.3.0)
* pg (0.15.1)
* polyglot (0.3.3)
* pr_geohash (1.0.0)
* progress_bar (1.0.0)
* rack (1.5.2)
* rack-test (0.6.2)
* rails (4.0.0.beta1)
* rails-i18n (0.7.3 1fc01d5)
* railties (4.0.0.beta1)
* rake (10.0.4)
* rdoc (3.12.2)
* rsolr (1.0.9)
* sass (3.2.7)
* sass-rails (4.0.0.beta1)
* sprockets (2.9.2)
* sprockets-rails (2.0.0.rc3)
* store_admin (0.0.1)
* store_frontend (0.0.1)
* sunspot (2.0.0.pre.130115)
* sunspot_rails (2.0.0.pre.130115)
* sunspot_solr (2.0.0.pre.130115)
* thor (0.18.1)
* thread_safe (0.1.0)
* tilt (1.3.7)
* treetop (1.4.12)
* tzinfo (0.3.37)
* uglifier (2.0.1)
The manually created task solr:
namespace :sunspot do
namespace :solr do
desc 'Start the Solr instance'
task :start => :environment do
case RUBY_PLATFORM
when /w(in)?32$/, /java$/
abort("This command is not supported on #{RUBY_PLATFORM}. " +
"Use rake sunspot:solr:run to run Solr in the foreground.")
end
if defined?(Sunspot::Rails::Server)
Sunspot::Rails::Server.new.start
else
Sunspot::Solr::Server.new.start
end
puts "Successfully started Solr ..."
end
desc 'Run the Solr instance in the foreground'
task :run => :environment do
if defined?(Sunspot::Rails::Server)
Sunspot::Rails::Server.new.run
else
Sunspot::Solr::Server.new.run
end
end
desc 'Stop the Solr instance'
task :stop => :environment do
case RUBY_PLATFORM
when /w(in)?32$/, /java$/
abort("This command is not supported on #{RUBY_PLATFORM}. " +
"Use rake sunspot:solr:run to run Solr in the foreground.")
end
if defined?(Sunspot::Rails::Server)
Sunspot::Rails::Server.new.stop
else
Sunspot::Solr::Server.new.stop
end
puts "Successfully stopped Solr ..."
end
task :reindex => :"sunspot:reindex"
end
end
My model:
class Product < ActiveRecord::Base
searchable auto_index: true, auto_remove: true do
text :name, boost: 5
text :description, boost: 4
end
end
And finally, solr schema.xml
<?xml version="1.0" encoding="UTF-8"?>
<schema name="sunspot" version="1.0">
<types>
<fieldType name="string" class="solr.StrField" omitNorms="true"/>
<fieldType name="tdouble" class="solr.TrieDoubleField" omitNorms="true"/>
<fieldType name="rand" class="solr.RandomSortField" omitNorms="true"/>
<fieldType name="text" class="solr.TextField" omitNorms="false" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1"
generateNumberParts="1"
catenateWords="1"
catenateNumbers="1"
catenateAll="0"
splitOnCaseChange="1"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.TrimFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="100" side="front"/>
</analyzer>
</fieldType>
<fieldType name="boolean" class="solr.BoolField" omitNorms="true"/>
<fieldType name="date" class="solr.DateField" omitNorms="true"/>
<fieldType name="sdouble" class="solr.SortableDoubleField" omitNorms="true"/>
<fieldType name="sfloat" class="solr.SortableFloatField" omitNorms="true"/>
<fieldType name="sint" class="solr.SortableIntField" omitNorms="true"/>
<fieldType name="slong" class="solr.SortableLongField" omitNorms="true"/>
<fieldType name="tint" class="solr.TrieIntField" omitNorms="true"/>
<fieldType name="tfloat" class="solr.TrieFloatField" omitNorms="true"/>
<fieldType name="tdate" class="solr.TrieDateField" omitNorms="true"/>
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
</types>
<fields>
<field name="id" stored="true" type="string" multiValued="false" indexed="true"/>
<field name="type" stored="false" type="string" multiValued="true" indexed="true"/>
<field name="class_name" stored="false" type="string" multiValued="false" indexed="true"/>
<field name="text" stored="false" type="string" multiValued="true" indexed="true"/>
<field name="lat" stored="true" type="tdouble" multiValued="false" indexed="true"/>
<field name="lng" stored="true" type="tdouble" multiValued="false" indexed="true"/>
<dynamicField name="random_*" stored="false" type="rand" multiValued="false" indexed="true"/>
<dynamicField name="_local*" stored="false" type="tdouble" multiValued="false" indexed="true"/>
<dynamicField name="*_text" stored="false" type="text" multiValued="true" indexed="true"/>
<dynamicField name="*_texts" stored="true" type="text" multiValued="true" indexed="true"/>
<dynamicField name="*_b" stored="false" type="boolean" multiValued="false" indexed="true"/>
<dynamicField name="*_bm" stored="false" type="boolean" multiValued="true" indexed="true"/>
<dynamicField name="*_bs" stored="true" type="boolean" multiValued="false" indexed="true"/>
<dynamicField name="*_bms" stored="true" type="boolean" multiValued="true" indexed="true"/>
<dynamicField name="*_d" stored="false" type="date" multiValued="false" indexed="true"/>
<dynamicField name="*_dm" stored="false" type="date" multiValued="true" indexed="true"/>
<dynamicField name="*_ds" stored="true" type="date" multiValued="false" indexed="true"/>
<dynamicField name="*_dms" stored="true" type="date" multiValued="true" indexed="true"/>
<dynamicField name="*_e" stored="false" type="sdouble" multiValued="false" indexed="true"/>
<dynamicField name="*_em" stored="false" type="sdouble" multiValued="true" indexed="true"/>
<dynamicField name="*_es" stored="true" type="sdouble" multiValued="false" indexed="true"/>
<dynamicField name="*_ems" stored="true" type="sdouble" multiValued="true" indexed="true"/>
<dynamicField name="*_f" stored="false" type="sfloat" multiValued="false" indexed="true"/>
<dynamicField name="*_fm" stored="false" type="sfloat" multiValued="true" indexed="true"/>
<dynamicField name="*_fs" stored="true" type="sfloat" multiValued="false" indexed="true"/>
<dynamicField name="*_fms" stored="true" type="sfloat" multiValued="true" indexed="true"/>
<dynamicField name="*_i" stored="false" type="sint" multiValued="false" indexed="true"/>
<dynamicField name="*_im" stored="false" type="sint" multiValued="true" indexed="true"/>
<dynamicField name="*_is" stored="true" type="sint" multiValued="false" indexed="true"/>
<dynamicField name="*_ims" stored="true" type="sint" multiValued="true" indexed="true"/>
<dynamicField name="*_l" stored="false" type="slong" multiValued="false" indexed="true"/>
<dynamicField name="*_lm" stored="false" type="slong" multiValued="true" indexed="true"/>
<dynamicField name="*_ls" stored="true" type="slong" multiValued="false" indexed="true"/>
<dynamicField name="*_lms" stored="true" type="slong" multiValued="true" indexed="true"/>
<dynamicField name="*_s" stored="false" type="string" multiValued="false" indexed="true"/>
<dynamicField name="*_sm" stored="false" type="string" multiValued="true" indexed="true"/>
<dynamicField name="*_ss" stored="true" type="string" multiValued="false" indexed="true"/>
<dynamicField name="*_sms" stored="true" type="string" multiValued="true" indexed="true"/>
<dynamicField name="*_it" stored="false" type="tint" multiValued="false" indexed="true"/>
<dynamicField name="*_itm" stored="false" type="tint" multiValued="true" indexed="true"/>
<dynamicField name="*_its" stored="true" type="tint" multiValued="false" indexed="true"/>
<dynamicField name="*_itms" stored="true" type="tint" multiValued="true" indexed="true"/>
<dynamicField name="*_ft" stored="false" type="tfloat" multiValued="false" indexed="true"/>
<dynamicField name="*_ftm" stored="false" type="tfloat" multiValued="true" indexed="true"/>
<dynamicField name="*_fts" stored="true" type="tfloat" multiValued="false" indexed="true"/>
<dynamicField name="*_ftms" stored="true" type="tfloat" multiValued="true" indexed="true"/>
<dynamicField name="*_dt" stored="false" type="tdate" multiValued="false" indexed="true"/>
<dynamicField name="*_dtm" stored="false" type="tdate" multiValued="true" indexed="true"/>
<dynamicField name="*_dts" stored="true" type="tdate" multiValued="false" indexed="true"/>
<dynamicField name="*_dtms" stored="true" type="tdate" multiValued="true" indexed="true"/>
<dynamicField name="*_textv" stored="false" termVectors="true" type="text" multiValued="true" indexed="true"/>
<dynamicField name="*_textsv" stored="true" termVectors="true" type="text" multiValued="true" indexed="true"/>
<dynamicField name="*_et" stored="false" termVectors="true" type="tdouble" multiValued="false" indexed="true"/>
<dynamicField name="*_etm" stored="false" termVectors="true" type="tdouble" multiValued="true" indexed="true"/>
<dynamicField name="*_ets" stored="true" termVectors="true" type="tdouble" multiValued="false" indexed="true"/>
<dynamicField name="*_etms" stored="true" termVectors="true" type="tdouble" multiValued="true" indexed="true"/>
<dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" multiValued="false"/>
<dynamicField name="*_p" type="location" indexed="true" stored="true" multiValued="false"/>
<dynamicField name="*_ll" stored="false" type="location" multiValued="false" indexed="true"/>
<dynamicField name="*_llm" stored="false" type="location" multiValued="true" indexed="true"/>
<dynamicField name="*_lls" stored="true" type="location" multiValued="false" indexed="true"/>
<dynamicField name="*_llms" stored="true" type="location" multiValued="true" indexed="true"/>
</fields>
<uniqueKey>id</uniqueKey>
<defaultSearchField>text</defaultSearchField>
<solrQueryParser defaultOperator="AND"/>
</schema>
source
share