0

さまざまなトークナイザーをサポートする必要がある複数のフィールドを使用して、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を使用しています

4

1 に答える 1

0

ここで何が起こるかというと、stored=true によって元の値がターゲット フィールドにも保存されます。

簡単な使用例では、TermsComponent を使用するだけで十分な場合があります。方法はこちらを参照してください。「オートコンプリートで使用する」と書かれています。これは、保存された値ではなく、このコンポーネントによって用語が返されるため機能します。

于 2014-01-04T20:56:15.143 に答える