Solr: ponctuation bande avant index
-
01-10-2019 - |
Question
Je suis un problème avec la ponctuation de l'indice striping Solr Lorsque le signe de ponctuation suivi juste après un mot alors ce mot n'est pas indexé correctement.
Par exemple:. Si nous index « bonjour, John », l'actif ne sera pas trouvée par mot-clé « bonjour » alors il n'y aura pas de problème si on enlève virgule après mot « bonjour »
Y at-il FilterFactory que supposé dépouillent la ponctuation? Toutes les idées?
Merci, Bogdan.
Pas de solution correcte
Autres conseils
Vous pouvez utiliser la solr.PatternReplaceFilterFactory
pour dépouiller début et ponctuation finale avec ceci:
<filter class="solr.PatternReplaceFilterFactory"
pattern="^\p{Punct}*(.*?)\p{Punct}*$"
replacement="$1"/>
Et si vous voulez dépouiller tous les signes de ponctuation au début et à la fin, à l'exception (par exemple) le signe dollar devant un mot, vous pouvez utiliser ceci:
<filter class="solr.PatternReplaceFilterFactory"
pattern="^[\p{Punct}&&[^$]]*(.*?)\p{Punct}*$"
replacement="$1"/>
Cela se fait avec l'WordDelimiterFilterFactory. Set generateWordParts = 1.
Il y a aussi PatternTokenizerFactory qui pourrait être utilisé, mais je ne essayé.
Utilisez 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>
...