Я хотел бы настроить индексацию таким образом, чтобы результаты с фонетическим соответствием имели меньший вес, чем обычные совпадения.
Для этого я создал два разных набора fieldType в моем schema.xml для текста:
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
</analyzer>
</fieldType>
<fieldType name="text_phonetic" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
<filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
</analyzer>
</fieldType>
и создал динамическое поле, использующее фонетическую фабрику:
<dynamicField name="*_phonetic" stored="false" type="text_phonetic" multiValued="true" indexed="true"/>
Теперь в моей модели я могу сделать что-то вроде:
text :name, :as => :name_phonetic
и это работает нормально.
Мой вопрос: как лучше всего настроить кучу полей для использования как обычной индексации текстового поля, так и фонетической, с более высоким усилением по сравнению с первым? Я могу просто продублировать все мои строки индексации в моей модели, но есть ли способ сделать это непосредственно в схеме с конструкцией и сделать это доступным в полнотекстовом запросе солнечных пятен?