2017-03-29 2 views
2

Ich muss Apostroph aus den Wörtern vor Indexierung entfernen. Zum Beispiel möchte ich, dass der Bachelor zum Bachelor wird. Ich habe solr.ApostropheFilterFactory dafür benutzt, aber ich denke, dieser Filter wurde nach solr4 veraltet und ich benutze solr5. Dies ist, wie ich esErsetzen von ApostropheFilterFactory in solr 5.3.1

verwendet
<analyzer> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.ApostropheFilterFactory"/> 
</analyzer> 

Ich habe auch StandardFilterFactory verwendet

<fieldType name="text" class="solr.TextField"> 
  <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.StandardFilterFactory"/> 
  </analyzer> 
</fieldType> 

Beide sind nicht für mich arbeiten. Kann mir jemand etwas vorschlagen? Danke im Voraus!

+0

können Sie PatternReplaceFilterFactory versuchen? –

+0

Ich habe versucht, PatternReplaceFilterFactory, aber es funktioniert nicht – gashu

Antwort

0

Verwenden Wort Delimiter Filter

Dieser Filter Token an Worttrennzeichen aufspaltet.
Die Regeln zur Bestimmung Begrenzungszeichen werden wie folgt bestimmt: innerhalb eines Wortes

<fieldType name="text" class="solr.TextField"> 
    <analyzer> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.WordDelimiterFilterFactory"/> 
    </analyzer> 
</fieldType> 
  • Eine Änderung Fall: „Camelcase“ -> „Camel“, „Fall“. Dies kann durch Setzen von splitOnCaseChange = "0" deaktiviert werden.
  • Ein Übergang von Alpha zu numerischen Zeichen oder umgekehrt: "Gonzo5000" -> "Gonzo", "5000" "4500XL" -> "4500", "XL". Dies kann durch Setzen von splitOnNumerics = "0" deaktiviert werden.
  • Nicht-alphanumerische Zeichen (verworfen): "hot-spot" -> "hot", "Spot"
  • Ein Hinter "'s" entfernt "von O'Reilly" -> "O", "Reilly " Alle führenden bzw. nachgestellten Begrenzungszeichen werden verworfen: "--Heißes-spot--" -> "hot", "Spot"

oder

Klassische Filter

diese Filter nimmt die Ausgabe von Cl assic Tokenizer und streift Perioden von Akronymen und "s" von Possessiven.

<fieldType name="text" class="solr.TextField"> 
    <analyzer> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.ClassicFilterFactory"/> 
    </analyzer> 
</fieldType> 

Hinweis: Wenn Sie type = "index" in Analysator Tag bieten dann für Index Zeit verwendet Analysator

+0

Hallo Sorry für die späte Antwort, ich habe versucht sowohl die oben genannten aber kein Glück, Wenn Sie wollen, kann ich den XML-Code, den ich schrieb. – gashu

+0

Haben Sie nach der Änderung diesen Kern neu geladen? oder solr neu starten? und Reindexdaten?. Wenn Sie dies nicht tun, wird es nicht beeinflussen –

+0

Ich habe den Code neu geladen, neu indiziert die Daten, aber es hat nicht funktioniert – gashu