2017-02-02 7 views
0

Ich habe das folgende Problem mit Solr Suche.Solr erhält nur Ergebnisse, wenn der Suchbegriff groß geschrieben wird

Wenn ich nach Wörtern suche, die mit "oe", "ae" or "ue" (Which is in German the same like ö, ä and ü) and the search term is not capitalized beginnen, gibt Solr 0 Ergebnisse zurück.

Aber, wenn ich nach dem gleichen Wort with capitalized first char of the word, I get results von Solr suchen.

Wenn ich führen Sie die Suche in einem Debug-Modus sehe ich, dass the non-capitalized search term is always converted from eg. "ue" -> "u"

"response": { 
    "numFound": 0, 
    "start": 0, 
    "docs": [] 
    }, 
    "debug": { 
    "rawquerystring": "uetze", 
    "querystring": "uetze", 
    "parsedquery": "(+DisjunctionMaxQuery((content:utze | title:utze | keywords:utze | description:utze^2.0 | browserTitle:utze^3.0)))/no_coord", 
    "parsedquery_toString": "+(content:utze | title:utze | keywords:utze | description:utze^2.0 | browserTitle:utze^3.0), 
    "explain": {}, 
    "QParser": "ExtendedDismaxQParser", 
    "altquerystring": null, 

Während Indizierung folgende Filter verwendet werden:

<fieldType name="text"  class="solr.TextField"  sortMissingLast="true" positionIncrementGap="100"> 
    <analyzer> 
     <tokenizer   class="solr.WhitespaceTokenizerFactory" /> 
     <filter    class="solr.StopFilterFactory" ignoreCase="true" words="stopwords-de.txt" /> <!-- DE --> 
     <filter    class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" splitOnCaseChange="0" splitOnNumerics="0" catenateWords="1" catenateNumbers="0" catenateAll="1" stemEnglishPossessive="1" preserveOriginal="1" /> 
     <filter    class="solr.GermanNormalizationFilterFactory" /> <!-- DE --> 
     <filter    class="solr.ASCIIFoldingFilterFactory" /> <!-- DE --> 
     <filter    class="solr.LowerCaseFilterFactory" /> 
    <filter    class="solr.WordDelimiterFilterFactory" catenateAll="1" preserveOriginal="1" /> 
    </analyzer> 

</fieldType> 

Wer weiß, wie diese Umwandlung zu vermeiden? Jede Hilfe wird geschätzt!

Antwort

0

Ja, es ist das erwartete Verhalten entsprechend Ihrer Konfiguration, da GermanNormalizationFilterFactory wie folgt vor:

'ß' is replaced by 'ss' 
'ä', 'ö', 'ü' are replaced by 'a', 'o', 'u', respectively. 
'ae' and 'oe' are replaced by 'a', and 'o', respectively. 
'ue' is replaced by 'u', when not following a vowel or q. 

So, können Sie es entfernen konnte, und die ue nicht zu u ersetzt werden. Ein weiterer möglicher Ansatz, der helfen könnte (ich bin mir nicht sicher, ich bekomme Ihren Anwendungsfall), ist <filter class="solr.LowerCaseFilterFactory" /> über GermanNormalizationFilterFactory

zu platzieren
Verwandte Themen