Это отличный вопрос, и эта функция обсуждается для включения в Sunspot.
Sunspot использует соглашения об именах динамических полей для настройки своей схемы.Например, вот два существующих определения для текстовых полей:
<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>
Вы можете добавить аналогичное определение дляразличные языки, которые вы хотели бы проиндексировать (как упоминает также Маурисио), а затем установите новые определения 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 со своими мыслями!