2017-09-05 1 views
0

는 내가 SOLR 6.1, 를 사용하고 난 그냥, 그것은 검색에서 대소 문자를 구분하지 을 필요로하는 문서 인덱스, 하지만 어떤 이유를 완료하고 난 솔루션은, 을 작동하게 복사 필드를 사용할 수 있습니다 발견하지만 필요
아래처럼 필드가 완료하기 위해 추가 :이 후 인덱스를 완료 할 때 Solr이 필드 추가를 수행하고 복사 필드를 사용하면 다시 색인화하지 않을 수 있습니까?

<fieldType name="string_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true"> 
    <analyzer> 
     <tokenizer class="solr.KeywordTokenizerFactory"/>   
     <filter class="solr.LowerCaseFilterFactory" /> 
    </analyzer> 
</fieldType> 

아무도 알고 있지

내가이 솔루션을 사용할 수 있습니까?

또는 다른 해결책이 있습니까?

답변

0

아니요. 생성 된 토큰의 대소 문자를 변경하려면 콘텐츠 (적어도 해당 필드)를 다시 색인해야합니다. 원래 소스에서이 작업을 수행하거나 모든 필드가 저장된 것으로 설정되어있는 한 Solr에서 각 문서를 검색하고 단일 필드를 다시 색인화하는 스크립트를 작성할 수 있습니다. 저장되지 않은 경우 (저장된 값 대신 사용할 수있는 docValues가없는 경우) 다시 색인해야합니다. Solr은 처리 된 토큰에서 원본 텍스트를 가져올 방법이 없습니다.

는 또한 KeywordTokenizer가 하나의 토큰 같은 값을 유지하고

당신이 SOLR의 관리 인터페이스에서 분석 페이지를 사용하여 인덱싱하기 전에 올바른 결과를 얻을 수 있는지 확인 공백 등을 분할하지 않을 것을 기억하십시오.

+0

Solr 패싯 기능을 사용하여 합계를 계산하고 싶지만 "Abc", "abc", "aBc"처럼 대소 문자가 다른 경우 실제로는 내 지각과 동일한 값인 그래서 원한다면 이 작업을 수행하려면 다시 인덱스가 필요하고 다른 솔루션이 필요하지 않습니까? – ZivHus

+0

수정 -면 개수는 토큰을 기반으로하며 토큰이 다른 경우 개별 카운트가됩니다. 그것이 Solr로부터 직접 정확하기를 원한다면, 다시 색인해야 할 것입니다. 그것이 실제적으로하기가 어렵지 않다면, 나는 그것을 할 것입니다. 다른 옵션은 컨트롤러 코드의 수를 병합하고 실제 값을 기준으로 큰 필터를 만드는 것입니다. 그것은 추한 해킹입니다 - 나는 다시 색인 생성과 함께 갈 것입니다. 재 색인 생성은 아마도 한 번 이상해야 할 일이므로 쉽게 수행 할 수 있습니다. – MatsLindh