2016-10-18 4 views
4

Est-ce que quelqu'un sait s'il est possible de filtrer l'index d'une plage numérique telle que "1-5" à "1", "2", "3", "4", "5"? Je ne trouve aucune usine de filtre qui fait cela.Indexation d'une plage numérique dans Solr

Exemple: "1-5 ABC" est indexé comme "1 ABC", "2 ABC", "3 ABC", "4 ABC", "5 ABC"

+0

Pourriez-vous préciser exactement ce que vous essayez de faire? J'essaie juste de comprendre ma question. Cherchez-vous à filtrer vos résultats de recherche en fonction d'une plage de l'ID? –

+0

@LeftyGBalogh Filtrer par résultat de recherche est facile à faire mais ce dont j'ai besoin est d'avoir une usine de filtres qui indexe mon document de dire "1-5 A" à "1 A", "2 A", "3 A", "4 A", "5 A" donc quand je fais une recherche de "3 A", j'obtiens le résultat du document "1-5 A" – GucciProgrammer

Répondre

1

Qu'est-ce que vous voulez peut être réalisé pour bien sûr, mais cela pourrait ne pas être simple.

Une façon possible de le faire sans écrire de code Java, peut-être en utilisant PatternReplaceFilter dans votre chaîne d'analyse. Mon expertise regex est très basique, donc je ne suis pas capable de dire avec certitude si c'est possible ou pas ... Votre regex devrait être capable de faire correspondre et de capturer les jetons de type '1-3', puis de les remplacer par '1 ',' 2 ',' 3 '. Mais je doute qu'il soit possible de le faire, car vous devez émettre plusieurs jetons par match ...

Le moyen le plus sûr d'y parvenir est d'écrire votre classe filterfactory personnalisée, et de gérer la logique là-bas. C'est possible mais nécessite une expertise Java.