2017-01-30 1 views
0

Ich versuche, Synonyme zu Arbeiten mit Begriffen, die Whitespace haben, die anscheinend ein Mangel von solr ist. Zu hacken es, ich versuche PatternReplaceCharFilterFactory zu verwenden Leerzeichen mit Bindestrichen zu ersetzen und dann meine Synonyme Silbentrennung:Verwenden von PatternReplaceCharFilterFactory für Mehrwort-Synonyme

<fieldType name="special_synonyms" class="solr.TextField"> 
<analyzer type="index"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory" /> 
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="100" /> 
    <filter class="solr.WordDelimiterFilterFactory" 
      generateWordParts="1" 
      generateNumberParts="1" 
      catenateWords="1" 
      catenateNumbers="1" 
      catenateAll="0" 
      preserveOriginal="1" 
    /> 
</analyzer> 
<analyzer type="query"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="([/\s+])" replacement="-" /> 
    <filter class="solr.KStemFilterFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 
</analyzer> 

das Analysetool verwenden erhalte ich die richtigen Synonyme, wenn ich meinen Mehrwort-Begriff eingeben , aber wenn ich eine Abfrage durchführe, findet sie 0 Ergebnisse, wenn ich den Bindestrich nicht manuell hinzufüge.

Antwort

1

Der Nachteil Solr ist, dass der Raum-Parsing vor geschieht der Analysator aufgerufen wird. Daher sollte dein Hack nicht funktionieren. Dies wird gerade behoben, ist aber noch nicht fertig. Das zu betrachtende Problem ist SOLR-9185

Versuchen Sie, Ihre Abfrage als Phrase ("Anführungszeichen") zu senden. Oder verwenden Sie Field Query Parser mit Ihrem Text, der über eine lokale Parametervariable gesendet wird.

Oder Sie könnten daran interessiert sein, eine kostenlose 3rd-Party Match Query Parser zu versuchen.

Verwandte Themen