2011-01-19 3 views
2

영화 제목의 색인을 생성하고 있습니다. 현재 두 개의 필드가 있습니다.Solr/Lucene : 문자열을 토큰화할 수 있습니까?

하나는 미리 구성된 textgen이고 하나는 문자열이며 대소 문자를 구분하지 않습니다.

copyfield 지시문을 사용하여 두 필드에서 동일한 데이터를 색인화합니다.

dismax 요청 처리기를 사용하고 있습니다.

나는 "반지의 주인"이라는 제목에서 "로드 링"을 찾을 수 있지만 정확한 일치를 높이기 위해이 작업을 수행합니다. 예를 들어 "주인 또는 반지"는 "주인의 반지"보다 점수가 높지만 둘 다 발견됩니다.

이제 정확하게 일치하는 데 필요한 문자열 필드와 함께 연주했습니다.

그러나 나는 결과를 얻지 못했습니다. 정확한 문자열을 검색하면 결과 만 얻습니다. 심지어 공간이 작동되는 것은 아닙니다 ...

  • 은 사용자 정의 문자열을 가질 수 짝수 configuraition /하는 분석은이 사용 사례에 대한 추천
  • 무엇 필드?

답변

2

"문자열"필드는 토큰 화되지 않으므로 정확한 일치 만 작동합니다. 데이터 유형을 '텍스트'로 변경하거나 WhitespaceTokenizer을 체인에 추가 할 수 있습니다.

또한 정확한 일치를 수동으로 높일 필요가 없습니다. 점수 알고리즘이 자동으로이를 수행합니다.

2

solr/conf/schema.xml 예제를 살펴보면 여러 가지 유형의 필드가 있으며 잘 설명되어 있습니다. 순위는 이것으로 이미 꽤 좋은해야

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StandardFilterFactory"/> 
     <filter class="solr.ASCIIFoldingFilterFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

: 검색 유형에 맞는

당신은 아마 같은 위치, 간단한 tokenised 낮은 맡았다 필드가 필요합니다. 표준 텍스트 검색을 하나

는 순위를 개선하기 위해, "중지 단어"와 "형태소 분석"을 사용 나는 아마 그것을 할 것입니다하지만 제목을 검색하기위한 (아래 필드에서와 같이) :

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StandardFilterFactory"/> 
     <filter class="solr.ASCIIFoldingFilterFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.StopFilterFactory" 
       ignoreCase="true" 
       words="stopwords_spanish.txt" 
       enablePositionIncrements="true" 
       /> 
     <filter class="solr.SnowballPorterFilterFactory" language="English"> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StandardFilterFactory"/> 
     <filter class="solr.ASCIIFoldingFilterFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.StopFilterFactory" 
       ignoreCase="true" 
       words="stopwords.txt" 
       enablePositionIncrements="true" 
       /> 
     <filter class="solr.SnowballPorterFilterFactory" language="English"/\ 
> 
     </analyzer> 
    </fieldType> 
관련 문제