2011-10-23 3 views
0

접두사 쿼리 'æb*'과 'aeb*'을 사용하여 문서를 찾을 수 있도록 필드를 인덱싱하려고합니다. 무슨 일이 일어나는가 : 그것은 후자를 찾지 만 전자는 찾지 못한다. 등ISOLatin1Accent 문자가있는 Solr 접두사 쿼리

A, I,와 같은 문제이 내 스키마입니다 :

<fieldtype name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 

    </analyzer> 
</fieldtype> 

당신은 내가 인덱스 및 쿼리에 대해 동일한 분석기를 사용하고 볼 수 있듯이. 따라서 올바르게 이해하면 'æb*'쿼리는 'aeb*'으로 정규화되어야합니다. '*'기호가 어떻게 든 방해합니까? 원하는 결과에 맞게 스키마를 설정하려면 어떻게해야합니까?

저는 Solr 1.4.1을 사용하고 있습니다.

답변

1

접두어, 와일드 카드 및 퍼지 검색의 경우 검색 단어에 대한 텍스트 분석이 수행되지 않습니다.
MappingCharFilterFactory가 검색시 지정 되더라도 검색 용어는 분석되지 않습니다.
분석은 인덱스 시간에 적용되므로 upper case matches도 아닌 aeb* (악센트 필터 및 소문자)과 일치합니다.

고유 한 쿼리 구문 분석기를 정의하고 접두사 쿼리에 대한 검색어를 분석 할 수 있습니다.
그 외에는 악센트가있는 버전과 악센트가없는 버전을 정의하고 두 가지 모두에서 검색 작업을 수행하십시오. 그러나 검색어를 소문자로 바꿔야합니다.

+0

감사합니다. 색인화 전에 내 끝에서 정규화하거나 정규화를 완전히 중단한다고 생각합니다. – Morrowless