2012-01-16 1 views
4

solr 3.5를 사용하고 schema.xml에서 다음을 정의하여 문서에 카테고리를 추가하는 사용자 정의 필드를 추가했습니다.솔라에서 패싯 필드의 소문자 사용 안 함

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

이제 해당 카테고리 필드의 색인 값을 모두 표시해야하는 Search-Web-Client를 구현하고 있습니다. 내가 그랬어 그 다음 쿼리 :

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

결과는 다음과 같다 :

<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> 

내 웹 클라이언트를 표시 범주의 모든 이름,하지만 그들은 소문자로 기록되지만, 인덱스에 저장됩니다 대문자로

<response> 
<result> 
    <doc> 
    ... 
    <str name="category">Category1</str> 
    ... 
    </doc> 
</result> 
</response> 
  • 용액 A :이 경우를 구분하는 패싯 - 값 이름을 강제 할 수 있는가?
  • 솔루션 b : 인덱스에 저장된 범주의 모든 값을 제공하는 다른 쿼리가 있습니까?
+1

당신이 당신의'schema.xml'에 문자열 fieldType의 정의를 게시하시기 바랍니다 수 있습니까? 그것은 기본 것이 아닙니다, 그렇죠? – javanna

+0

도움을 주셔서 감사합니다. 기본 정의입니다. 하지만 사이트를 다시 색인해야했습니다. – jpee

+0

위대한, 다행 당신은 해결! – javanna

답변

11

string 필드에 LowerCaseFilterFactory을 사용하고 계신 것으로 의심됩니다. 이 경우 색인 된 값은 category1이지만 저장된 값은 여전히 ​​제출 한 원본 값 인 Category1입니다.

원하는 패싯 동작을 사용하려면 schema.xml에있는 필드 유형 정의에서 LowerCaseFilterFactory을 제거해야합니다. 사실

, 그것은 Tokenizer없이, 간단한 fieldType와면 특정 copyField를 사용하는 것이 일반적입니다, Filter

+0

답변 해 주셔서 감사합니다. 나는 lowerCaseFilterFactory가있는 text_general에서 string으로 유형을 변경했습니다. 문자열에는 이러한 필터가 없습니다. 색인을 삭제하고 내 웹 페이지를 다시 색인하는 것을 잊어 버렸습니다. 그 후 모든 것이 잘 작동했습니다. – jpee