2016-04-06 2 views
0

Мы используем Solr 5.4 и некоторые текстовые поля, определенные в text_de со следующими schema.xmlSolr GermanNormalizationFilter и специальные символы

<fieldType name="text_de" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.StopFilterFactory" words="lang/stopwords_de.txt" format="snowball" ignoreCase="true"/> 
     <filter class="solr.GermanNormalizationFilterFactory"/> 
     <filter class="solr.GermanLightStemFilterFactory"/> 
    </analyzer> 
</fieldType> 

, который по умолчанию конфигурации. Интересно, почему поиск name:Rosewein не имеет результатов, но name:Roséwein возвращает связанные записи. Так что я попытался запросить поле name с некоторыми специальными гольцов и включена опция debugQuery, что приводит к:

{ 
    "responseHeader": { 
    "status": 0, 
    "QTime": 0, 
    "params": { 
     "debugQuery": "true", 
     "indent": "true", 
     "q": "name:ÁÀÂÄÃåĀĂÆæöüßéèêíóú", 
     "_": "1459935371889", 
     "wt": "json" 
    } 
    }, 
    "response": { 
    "numFound": 0, 
    "start": 0, 
    "docs": [] 
    }, 
    "debug": { 
    "rawquerystring": "name:ÁÀÂÄÃåĀĂÆæöüßéèêíóú", 
    "querystring": "name:ÁÀÂÄÃåĀĂÆæöüßéèêíóú", 
    "parsedquery": "name:aaaaãåāăææousséèêiou", 
    "parsedquery_toString": "name:aaaaãåāăææousséèêiou", 
    "explain": {}, 
    "QParser": "LuceneQParser", 
... 

посмотреть на поле parsedquery, который показывает, что не все варианты заменяются представления ASCII. Я не могу использовать ASCIIFoldingFilterFactory в качестве фильтра, потому что немецкие умлауты могут потеряться, потому что в некоторых случаях они преобразуются из ü в ue и так далее.

Но то, что я не могу понять: почему íóúá преобразуются в ioua, но не é, который хранится в é?

И: есть ли способ конвертировать все эти специальные вокалы в их ASCII-представление, но разрешить быть умляутами, преобразованными в ae Ae ue Ue и так далее? (Без необходимости повторной компиляции Solr)

+0

Вы можете попробовать German2 со SnowballPorterFilterFactory ...? –

+0

Как можно здесь прочитать https://lucene.apache.org/core/5_4_0/analyzers-common/index.html?org/apache/lucene/analysis/de/GermanNormalizationFilter.html souldn't Solr использует German2 уже? – rabudde

ответ

1

Если вы ищете правила пользовательского сопоставления символов, вы можете использовать MappingCharFilterFactory, который принимает конфигурационный файл с правилами. Techproducts example schema демонстрирует его (прокомментировал, поэтому выпадает после первой модификации). Проверка mapping-FoldToASCII.txt и mapping-ISOLatin1Accent.txt

+0

Звучит неплохо, дайте мне несколько дней для тестирования – rabudde

Смежные вопросы