Frage

ich habe ein Problem mit Striping Interpunktion aus dem solr Index Wenn die Interpunktionszeichen folgen direkt nach einem Wort, dann wird dieses Wort nicht korrekt indiziert.

. Zum Beispiel: wenn wir Index „Hallo, John“, werde der Vermögenswert nicht nach Stichwort „Hallo“ zu finden, während es wird kein Problem sein, wenn wir Komma nach Wort „Hallo“ entfernen

Gibt es eine Filterfactory dass suppose Interpunktion abzustreifen? Irgendwelche Ideen?

Danke, Bogdan.

Keine korrekte Lösung

Andere Tipps

Sie können die solr.PatternReplaceFilterFactory verwenden zu abzustreifen beginnen und Hinter Interpunktion mit diesem:

<filter class="solr.PatternReplaceFilterFactory"
    pattern="^\p{Punct}*(.*?)\p{Punct}*$"
    replacement="$1"/>

Und wenn Sie alle Satzzeichen am Anfang und Ende abzustreifen wollen, mit Ausnahme von (zum Beispiel), um die Dollar-Zeichen vor einem Wort, könnten Sie verwenden:

<filter class="solr.PatternReplaceFilterFactory"
    pattern="^[\p{Punct}&&[^$]]*(.*?)\p{Punct}*$"
    replacement="$1"/>

Dies ist mit dem WordDelimiterFilterFactory getan. Set generateWordParts = 1 ist.

Es ist auch PatternTokenizerFactory die verwendet werden könnten, aber ich habe nie versuchte es.

Verwenden PatternReplaceFilterFactory

<!-- remove punctuation -->
    <filter class="solr.PatternReplaceFilterFactory" pattern="^(\p{Punct}*)(.*?)(\p{Punct}*)$" replacement="$2"/>
    <filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StandardFilterFactory"/>
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
  </analyzer>

...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top