2017-01-05 23 views
0

["Super Ball"、 "BlaBla"、 "Info"]のように、ある値として別の単語を含む文字列を含むsolr配列フィールドがあります。 これらの3つの値をすべてファセット値として参照し、フィールドによる大文字と小文字を区別しない検索も必要です。Solrファセットとトークナイザ

次のフィールドタイプ設定を使用すると、ファセットに3つの値が表示されますが、大文字と小文字を区別しない検索は機能しません。私は<tokenizer class="solr.StandardTokenizerFactory"/>を使用する場合

<fieldType name="myLower" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.KeywordTokenizerFactory"/>  
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
     <analyzer type="query">  
     <tokenizer class="solr.KeywordTokenizerFactory"/>  
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
    </fieldType> 

StandardTokenizerFactoryは2つのワードに「スーパーボール」を分割becourse、私は小文字の検索を使用することができますが、私は4つのファセット値を参照してください。

このようなケースを管理するにはどうすればよいですか?

答えて

2

2つの別々のフィールドを使用します。ファセッティングと検索のためのもの - それぞれ異なる操作で、異なるフィールド定義がそれぞれ優れています。

<copyField source="searchfield" dest="facetfield" maxChars="30000" />を使用して、検索フィールドに送信するコンテンツを専用ファセットフィールドにコピーします。ファセットのためにファセットフィールド(キーワードテキケイザー+ロワーケーシングまたはケースをそのまま維持したい場合は文字列フィールドのみ)を使用して、検索フィールドに対して検索を実行します。ファセットフィールドは、ユーザーがさらにフィルタリングのためにファセットを選択したときにfqフィルタを適用するときにも使用されます。

関連する問題