2016-04-06 20 views
0

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)

+0

können Sie German2 mit SnowballPorterFilterFactory versuchen ...? –

+0

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

Antwort