2017-02-01 7 views
0

solr.ICUTokenizerFactory을 사용하여 firstNamelastName 필드를 색인화합니다. 따라서 언어 별 단어 경계에 따라 토큰화할 수 있습니다.ICUTokenizerFactory의 원래 토큰을 보존합니다.

<fieldType name="text_icu" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
    <tokenizer class="solr.ICUTokenizerFactory"/> 
    </analyzer> 
</fieldType> 

그러나 나는 알아 내려고하는 사용 사례가 있습니다. 내가 firstnight에 "steve-jobs"과 같은 것을 가지고 있다고 말할 수 있습니다. 두 개의 토큰으로 토큰 화됩니다. 내가

은 늘 아무것도 찾을 *

스티브 조에 대한 와일드 카드 검색을 수행 할 경우

스티브 잡스

그러나 같은 더 토큰이없는 becuase 그.

orignal 토큰을 보존 할 수 있으면 문제가 해결됩니다. 그래서 색인 동안 어떻게 든 나는이

스티브 잡스, 스티브 잡스

내가 원래 토큰을 보존 할 수있는 방법이 있나요

같은 세 개의 토큰을 생성 할 수 있습니까?

DSE 4.8.12입니다.

아니면 다른 방법으로 해결할 수 있습니다. 모든 포인터가 감사하겠습니다. 감사.

답변

0

ICUTokenizerFactory와 함께 WordDelimiterFilterFactory를 사용할 수 있다고 생각합니다. WordDelimiterFilterFactory에는 preserveOriginal 옵션이 있습니다.

<fieldType name="text_icu" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
    <tokenizer class="solr.ICUTokenizerFactory"/> 
    <filter class="solr.WordDelimiterFilterFactory" 
     preserveOriginal="1" 
    /> 
    </analyzer> 
</fieldType> 
+0

작동하지 않았습니다. WordDelimiterFilterFactory로 이동하기 전에 생각합니다. ICUTokenizerFactory는 이미 토큰을 두 개로 나눕니다. WordDelimiterFilterFactory는 ICUTokenizerFactory가 제공하는 토큰에서 작동하고 WordDelimiterFilterFactory가 오기 전에 orignal이 손실됩니다. – root545

+0

그래, ICU가 WhitespeaceTokenizerFactory와 비슷한 방식으로 작동하도록 규칙 파일을 추가해야한다고 생각합니다.''이 규칙 파일은 solr 소스에서 찾을 수 있습니다 - solr 5.0.0에서는 lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/segmentation directrory –

+0

Datastax (dse 4.8.12)를 사용하고 있습니다. dse에 규칙 파일을 추가하는 방법을 알고 있습니까? – root545