Librairie JAVA requetage avec gestion des parentheses
chreezy-breezy
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour à tous,
Je viens vers vous car dans le cadre d'un stage je dois trouver une solution afin de permettre aux utilisateurs de taper des recherches en y incluant des opérateurs logiques.
Par exemple : ((toto AND tata) OR (titi AND NOT tata))
Cela me renverrait tout les résultats comprenant toto ET tata OU titi mais pas tata.
Plutot que de m'embeter à coder cette fonctionnalité, j'aimerai savoir si l'un d'entre vous connais une librairie JAVA capable de gérer ce type de recherche (gestion des parenthèses et des opérateurs logiques de base ==> AND, OR, NOT).
Merci par avance
Je viens vers vous car dans le cadre d'un stage je dois trouver une solution afin de permettre aux utilisateurs de taper des recherches en y incluant des opérateurs logiques.
Par exemple : ((toto AND tata) OR (titi AND NOT tata))
Cela me renverrait tout les résultats comprenant toto ET tata OU titi mais pas tata.
Plutot que de m'embeter à coder cette fonctionnalité, j'aimerai savoir si l'un d'entre vous connais une librairie JAVA capable de gérer ce type de recherche (gestion des parenthèses et des opérateurs logiques de base ==> AND, OR, NOT).
Merci par avance
1 réponse
-
Bonjour,
En Java le mécanisme de ScriptEngine te permet d'utiliser des langages de script qui permettent de faire ça sans trop de soucis.
Exemple en JavaScript :
package test; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public class Test { public static void main(String[] args) throws ScriptException { ScriptEngine js = new ScriptEngineManager().getEngineByName("js"); boolean toto = true, tata = true, titi = true; String script = "toto=" + toto + "; " + "tata=" + tata + "; " + "titi=" + titi + "; " + "((toto && tata) || (titi && ! tata));"; boolean result = (boolean) js.eval(script); System.out.println(result); } }