音声一致の結果が通常の一致よりも重み付けされないように、インデックス作成を設定したいと考えています。
これを行うために、テキスト用に schema.xml に 2 つの異なる 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
そしてそれはうまくいきます。
私の質問は、多くのフィールドを設定して、通常のテキスト フィールド インデックスと音声フィールド インデックスの両方を使用し、最初のものよりも高いブーストを使用するための最良の方法は何ですか? モデル内のすべてのインデックス行を複製することはできますが、構造体を使用してスキーマ内でこれを直接実行し、それを太陽黒点のフルテキスト クエリで使用できるようにする方法はありますか?