Мы используем 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)
Вы можете попробовать German2 со SnowballPorterFilterFactory ...? –
Как можно здесь прочитать https://lucene.apache.org/core/5_4_0/analyzers-common/index.html?org/apache/lucene/analysis/de/GermanNormalizationFilter.html souldn't Solr использует German2 уже? – rabudde