2012-09-14 5 views
0

Solr에서 "a $ ap"가 "a $ ap"뿐만 아니라 "asap"을 찾고 싶습니다. 이를 위해 나는의 schema.xml 내 인덱스 및 쿼리 분석기에 이것을 추가하고 색인화 :달러 기호 PatternReplaceFilterFactory

<filter class="solr.PatternReplaceFilterFactory" pattern="$" replacement="s"/> 

는 그러나 "달러 (A $) AP 통신은"전용 "달러 (A $) AP 통신"과 "최대한 빨리"전용 "최대한 빨리"반환을 반환합니다. 아마도 어리석은 구문 일 것입니다. 그러나 나는 무엇이 잘못되었는지를 모릅니다!

답변

0

마지막으로 MappingCharFilterFactory로 고정했습니다.

나는 인덱싱 및 쿼리 분석기이 추가 :

<charFilter class="solr.MappingCharFilterFactory" mapping="mapping.txt"/> 

는 mapping.txt이처럼 보였다 여기서 다시 인덱싱 후 속임수를 썼는지

"$" => "s" 

!

1

끝 부분을 의미하는 정규 표현식의 특수 문자이므로 $를 이스케이프해야합니다.

사용 : -

<fieldType name="test" class="solr.TextField" sortMissingLast="true" omitNorms="true"> 
     <analyzer> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory" /> 
     <filter class="solr.PatternReplaceFilterFactory" pattern="\$" replacement="s" replace="all" /> 
     </analyzer> 
    </fieldType> 

위의 필드를 완벽하게 대체합니다.

+0

예, 이미 시도했지만 트릭을하지는 않습니다 ... – TTT

+1

Solr 3.6 나를 사용하는 전체 필드 추가 – Jayendra

+0

이것은 나에게 전혀 도움이되지 않았습니다. 기묘한. – TTT

관련 문제