我有一个基于Javascript的UI和基于Jersey的REST服务的web应用程序。UI具有某些特性,需要使用复杂的搜索条件来检索数据。UI定义了带有各种参数的搜索条件,但对本讨论最重要的是:用户可以创建这样的过滤器-
1. ( Receiver_Email_ID CONTAINS xyz@abc.com AND
2. Sender_Email_ID CONTAINS blocked@abc.com ) OR
3. ( Origin_Domain IS BADDOMAIN.com AND
4. Email_has_attachment == true )
数字1到4只是表示这些是UI中的不同行,这里的顺序很重要。UI以JSON格式表示它,服务器可以将其作为POJO接收。我需要能够存储这些条件,以便可以用过滤器重新填充UI并执行它。与其他几个表一起,我计划使用以下数据库表来存储
rule_id
rule_seq
op_paren
left_opr
operator
right_opr
cl_paren
and_or
它看起来是对的还是我可以改进?我的另一个选择是将整个JSON存储在嵌入式文档数据库(如OrientDB)中。
从形式的角度来看,每个搜索标准都是抽象的语法树,它不适合你的结构。从这个角度来看,您关于在OrientDB中保存搜索的想法非常适合任务,但实现并不简单。