我想设置我的索引,以便语音匹配结果的权重低于常规匹配。
为此,我在我的 schema.xml 中为文本创建了两个不同的 fieldType 集:
<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>
并创建了一个使用语音工厂的 dynamcicField:
<dynamicField name="*_phonetic" stored="false" type="text_phonetic" multiValued="true" indexed="true"/>
现在在我的模型中,我可以执行以下操作:
text :name, :as => :name_phonetic
它工作正常。
我的问题是,设置一堆字段以同时使用常规文本字段索引和拼音字段索引的最佳方法是什么,对第一个字段有更高的提升?我可以在我的模型中复制所有索引行,但是有没有办法让我直接在带有构造的架构中执行此操作,并在 sunspot 全文查询中使用它?