Wir verwenden Solr 5.4 und haben einige Textfelder wie text_de
definiert mit schema.xml folgendenSolr GermanNormalizationFilter und Sonderzeichen
<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>
die Standardkonfiguration ist. Ich frage mich, warum eine Suche nach name:Rosewein
keine Ergebnisse hat, aber name:Roséwein
gibt verwandte Einträge zurück. Also habe ich versuchte Feld name
mit einigen Sonderzeichen abzufragen und aktivierte Option debugQuery
die Ergebnisse:
{
"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",
...
haben einen Blick auf Feld parsedquery
, die zeigt, dass nicht alle Varianten mit ASCII-Darstellung ersetzt werden. Ich kann ASCIIFoldingFilterFactory
nicht als Filter verwenden, weil dann deutsche Umlaute verloren gehen können, weil sie in einigen Fällen von ü
in ue
konvertiert werden und so weiter.
Aber was ich nicht verstehen kann: warum íóúá
zu ioua
umgewandelt, aber nicht é
die als é
gehalten wird?
Und: gibt es eine Möglichkeit, all diese speziellen Vocals in ihre ASCII-Darstellung zu konvertieren, aber lassen Sie Umlaute in ae Ae ue Ue
konvertieren und so weiter? (Ohne Solr neu kompilieren zu müssen)
können Sie German2 mit SnowballPorterFilterFactory versuchen ...? –
Wie man hier lesen kann https://lucene.apache.org/core/5_4_0/analyzers-common/index.html?org/apache/lucene/analysis/de/GermanNormalizationFilter.html Soll Solr nicht bereits German2 benutzen? – rabudde