2017-01-05 5 views
0

[ "Super Ball", "BlaBla", "Info"]와 같이 하나의 값으로 문자열을 포함 할 수있는 솔라 배열 필드가 있습니다. 이 세 값을 모두 패싯 값으로보고 필드별로 대소 문자를 구분하지 않고 검색해야합니다.Solr 패싯 및 Tokenizer

다음 필드 유형 설정을 사용하면 패싯에 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은이 말을 "슈퍼 볼"을 분할 becourse 나는 4 개 패싯 값을 참조하십시오.

어떻게 이러한 사례를 관리 할 수 ​​있습니까?

답변

2

두 개의 별도 필드를 사용하십시오. 하나는 패싯 용이고 다른 하나는 검색 용입니다. 서로 다른 작업이고 서로 다른 필드 정의가 더 좋습니다.

<copyField source="searchfield" dest="facetfield" maxChars="30000" />을 사용하여 검색 필드로 보내는 내용을 전용 faceting 필드로 복사하십시오. 패싯에 대해 facetfield (대소 문자 그대로 유지하려는 경우 keywordtokenizer + lowercase 또는 문자열 필드 만 사용)를 사용하고 검색 필드에 대해 검색을 수행하십시오. 사용자가 추가 필터링을 위해 패싯을 선택한 경우 필터를 적용 할 때 패싯 필드가 사용됩니다.