2014-08-27 5 views
1

'Ö', 'Ş'또는 'Ç'(터키어 문자)와 같은 자국어 문자가있는 사전 순으로 필드를 정렬 할 수 있기를 원합니다. 다음과 같이 내 SOLR 스키마의Solr 특수 문자로 정렬

관련 부품은 다음과 같습니다

<field name="bookTitle" type="text_tr" indexed="true" stored="true"/> 
<field name="bookTitleSort" type="string" indexed="true" stored="false"/> 
<copyField source="bookTitle" dest="bookTitleSort"/> 

첫째, bookTitle asc을 사용하여 정렬하려고했으나 결과는 모든 알파벳 순서대로하지 않았다. 그런 다음 bookTitleSort이라는 string 필드를 추가하고 bookTitleSort asc을 시도했습니다. 특수 문자를 제외하고는 정상적으로 작동했습니다. 그 문자 중 하나로 시작하는 문자는 끝에 위치합니다.

답변

1

ICUCollationKeyFilter을 사용하면 로케일을 인식 할 수있는 정렬 순서를 사용할 수 있습니다. 터키어에 대한 올바른 로케일을 지금까지 내가 그럴 기억으로

<fieldType name="icu_sort_tr" class="solr.TextField"> 
    <analyzer> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.ICUCollationKeyFilterFactory" locale="tr" strength="primary"/> 
    </analyzer> 
</fieldType> 

이지만, 느낌 : 당신이 ICUCollationKeyFilter와 함께 KeywordTokenizer이있는 TextField을함으로써이 작업을 수행 할 수있는 방법을 보여줍니다 링크 된 위키 페이지에 대한 예제가있다 그 점을 두 번 확인해도됩니다.

+0

bin\solr.cmd start -f -v로 일을 시작할 수 SOLR 상세 모드에서 SOLR를 시작

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-analysis-extras-.*\.jar" /> <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lib" regex=".*\.jar"/> <lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs" regex=".*\.jar" />' 

는 SOLR'CollationKeyFilterFactory'는 대신, 추가 항아리를 필요로하지 않았기 때문에 터키어을 위해 좋은 일했다. 'TurkishLowerCaseFilterFactory' 필터도 추가되었습니다. 어쨌든, 올바른 방향으로 나를 가르쳐 주셔서 감사합니다. – keune

0

'ICUCollationKeyFilterFactory'가 삭제되었습니다. 정렬 libs와이 기본 모드에 포함되지 않습니다

<fieldType name="string_tr" class="solr.ICUCollationField" locale="tr" strength="primary" /> 

때문에 당신이 solrconfig에 추가해야합니다 : 당신은 같은 스키마에서 필드 유형으로에서 지정할 필요가있다. solrconfig에서 "solr-analysis-extras-", "icu4j-", "lucene-analyzer-icu- *"를 추가해야합니다.이 libs 만 추가하면됩니다. 모든 병이 한 번로드되고 모든 코어에서 사용할 수 있습니다. solr verbose 모드로 libs를 확인할 수 있습니다. 내가 사용