Sunspot のドキュメントを読んで、オートコンプリート フィールドを照会する方法を見つけようとしています。
ここのように作成します https://github.com/haitham/sunspot_autocomplete
ここに構成solr/conf/schema.xmlがあります
<types>
.......
<fieldType name="autocomplete" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.LetterTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="autosuggest" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.LetterTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
.....
</types>
<fields>
....
<dynamicField name="*_ac" type="autocomplete" indexed="true" stored="true"/>
<dynamicField name="*_as" type="autosuggest" indexed="true" stored="true"/>
....
</fields>
検索可能なフィールドを持つモデルがあります:
class Post < ActiveRecord::Base
attr_accessible :text, :user_id
has_one :user
searchable do
text :text
integer :user_id, :references => User
autocomplete :post_text, :using => :text
end
end
次のようにオートコンプリート フィールドを検索しようとすると:
Sunspot.search(Post) { keywords('ra', :fields => :'autocomplete') }
エラーが発生します:
Sunspot::UnrecognizedFieldError: No text field configured for Post with name 'autocomplete'
私が間違っていることは何ですか?
アプリケーションを github で共有しました: https://github.com/pironim/my_sunspot_app.git