2012-01-16 16 views
4

私はsolr 3.5を使用しており、カスタムフィールドを追加しました。これはschema.xmlで次のように定義してドキュメントにカテゴリを追加します。ソルでファセットフィールドの小文字を無効にする

<field name="category" type="string" indexed="true" stored="true"/> 

ここでは、Search-Web-Clientを実装しています。Search-Web-Clientは、そのカテゴリフィールドのインデックスのすべての値を表示する必要があります。

<response> 
<lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">45</int> 
    <lst name="params"> 
    <str name="facet.field">category</str> 
    <str name="q">*</str> 
    <str name="facet">true</str> 
    </lst> 
</lst> 
<result name="response" numFound="0" start="0" maxScore="0.0"/> 
    <lst name="facet_counts"> 
    <lst name="facet_queries"/> 
    <lst name="facet_fields"> 
    <lst name="category"> 
    <int name="category1">0</int> 
    <int name="category2">0</int> 
    <int name="category3">0</int> 
    <int name="category4">0</int> 
    <int name="category5">0</int> 
    </lst> 
</lst> 
<lst name="facet_dates"/> 
    <lst name="facet_ranges"/> 
    </lst> 
</response> 

私のWebクライアントは、カテゴリのすべての名前を表示しますが、これらは小文字で書かれているが、インデックスに格納されています。

facet=true&facet.field=category&q=* 

結果は次のようになります。私は次のクエリであることでした大文字で

<response> 
<result> 
    <doc> 
    ... 
    <str name="category">Category1</str> 
    ... 
    </doc> 
</result> 
</response> 
  • ソリューション:それは大文字と小文字を区別するために、ファセット値名を強制することは可能ですか?
  • ソリューションb:インデックスに格納されているカテゴリのすべての値を与える別のクエリがありますか?
+1

は、あなたの 'schema.xml'であなたの文字列FIELDTYPEの定義を投稿してくださいことはできますか?それはデフォルトのものではありません、そうですか? – javanna

+0

ご協力ありがとうございます、それはデフォルトの定義です。しかし、私は自分のサイトのインデックスを再作成する必要がありました。 – jpee

+0

素晴らしい、あなたが解決してうれしい! – javanna

答えて

11

stringのフィールドにLowerCaseFilterFactoryを使用していると思われます。その場合、インデックス値はcategory1ですが、保存された値は依然として送信元のCategory1です。

schema.xmlのフィールドタイプ定義のstringフィールドタイプから、LowerCaseFilterFactoryを削除して、目的のファセット動作を適用してください。

実際には、それはTokenizerせずに、簡単なFIELDTYPEと、ファセットのための具体的なcopyFieldを使用するのが一般的ですが、Filterなど

+0

あなたの答えをありがとう。私はtext_general(LowerCaseFilterFactoryを持っています)の型をstringに変更しました。文字列にはこのようなフィルタはありません。私は、インデックスを削除し、私のWebページを再インデックスすることを忘れました。その後、すべてうまくいった。 – jpee

関連する問題