2013-03-30 4 views
3

저는 solr을 사용하고 있습니다. 텍스트 필드에 StandardTokenizerFactory를 사용하고 있지만 밑줄을 사용하고 싶지 않습니다. PatternTokenizerFactory와 같은 다른 toknizer를 사용해야하나요 아니면 StandardTokenizerFactory로 할 수 있습니까? StandardTokenizerFactory와 동일한 기능이 필요하지만 밑줄은 분리하지 않아야합니다.solr.StandardTokenizerFactory로 밑줄을 사용하여 분할하지 마십시오.

답변

2

StandardTokenizerFactory에서 할 수 있다고 생각하지 않습니다. 한 가지 해결 방법은 먼저 밑줄을 StandardTokenizerFactory가 처리하지 못하고 문서에 포함시키지 않는 것으로 바꾸는 것입니다. 예를 들어, _QQ으로 바꾸고 PatternReplaceCharFilterFactory을 입력하고 StandardTokenizerFactory를 통과 한 다음 QQ_으로 바꿔 PatternReplaceFilterFactory을 사용할 수 있습니다. StandardTokenizerFactory이 하이픈에서 분할로 단지 다음과 같은 추가

Analysis Tool Screenshot

0

StandardTokenizerFactory을 위해 트릭을 할 것으로 보인다 "여기

<fieldType name="text_std_prot" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
     <charFilter class="solr.PatternReplaceCharFilterFactory" 
        pattern="_" 
        replacement="QQ"/> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.PatternReplaceFilterFactory" 
       pattern="QQ" 
       replacement="_"/> 
     ... 
    </analyzer> 
</fieldType> 

을 그리고 무슨 일의 스크린 샷입니다 : 여기를 할 수있는 fieldType 정의는 - ".

<charFilter class="solr.PatternReplaceCharFilterFactory" 
        pattern="_" 
        replacement="-"/> 
     <tokenizer class="solr.StandardTokenizerFactory"/>