さまざまなトークナイザーをサポートする必要がある複数のフィールドを使用して、solr で自動提案機能を実装しようとしています。私が達成したいシナリオは以下の通りです:
autosuggest にコピーされる 2 つのフィールド author(KeywordTokenizer) & subject(StandardTokenizer) があります (spellcheck.field として使用)
<field name="author" type="phrase" indexed="true" stored="true" multiValued="false"/>
<field name="subject" type="text_general" indexed="true" stored="true"/>
<field name="autosuggest" type="text_general" indexed="true" stored="true" multiValued="true"/>
<copyField source="*" dest="autosuggest"/>
<fieldType name="phrase" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
</fieldType>
サンプル値: Subject - "Dell boost Widescreen UltraSharp 3007WFP" ; 作者 - 「デル・スティラー」
検索クエリ: solr/select?q=de ; 期待される結果 : デル、デル スティラー
結果は、autosuggest が割り当てられた fieldtype に基づいて異なります。ただし、必要なのは、値をコピーする代わりに、各フィールドからトークンを「autosuggest」にコピーし、後でトークナイザーが照合されたフィールド値に新しいトークンを作成することです。
私はSOLR 4.5.1を使用しています