これは素晴らしい質問であり、Sunspot に含めるために議論されている機能です。
Sunspot は、動的フィールド命名規則を使用してスキーマをセットアップします。たとえば、テキスト フィールドの 2 つの既存の定義を次に示します。
<dynamicField name="*_text" stored="false" type="text" multiValued="true" indexed="true"/>
<dynamicField name="*_texts" stored="true" type="text" multiValued="true" indexed="true"/>
これらfieldType name="text"
は、スキーマで以前に定義されたものに対応しています。
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
インデックスを作成したいさまざまな言語に同様の定義を追加し (Mauricio も言及しているように)、dynamicField
それらを使用するためにいくつかの新しい定義をセットアップすることができます。
1.fieldType
フランス語のテキスト フィールドの定義
<fieldType name="text_fr" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="French"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
2.dynamicField
フランス語のテキスト フィールドの定義
<dynamicField name="*_text_fr" stored="false" type="text" multiValued="true" indexed="true"/>
<dynamicField name="*_texts_fr" stored="true" type="text" multiValued="true" indexed="true"/>
3. Sunspot でフランス語のテキスト フィールドを使用する
最新の Sunspot 1.2 (まだリリースされていない — 1.2.rc4 を使用) は:as
、フィールド名を指定できるオプションをサポートしています。
searchable do
text :description, :as => 'description_text_fr'
end
私が言ったように、これは Sunspot 1.3 または 1.4 に追加することを考えているものです。:lang => :en
個人的には、適切なフィールド定義を選択するためにテキスト フィールド定義のようなものを見たいと思っています。Sunspot のメーリング リストに、ぜひご意見をお寄せください。