我正在寻找一个Java/Scala库,可以接受用户查询和文本,并返回是否匹配。
我正在处理信息流,例如Twitter Stream,并且无法使用批处理过程。我需要实时评估每个推文,而不是通过Lucene RAMDisk对其进行索引并稍后查询它。
可以使用ANTLR创建解析器/词法分析器,但这是如此常见的用法,以至于我无法相信之前没有人创建过库。
以下是TextQuery Ruby library的一些示例,完全符合我的需求:
我正在处理信息流,例如Twitter Stream,并且无法使用批处理过程。我需要实时评估每个推文,而不是通过Lucene RAMDisk对其进行索引并稍后查询它。
可以使用ANTLR创建解析器/词法分析器,但这是如此常见的用法,以至于我无法相信之前没有人创建过库。
以下是TextQuery Ruby library的一些示例,完全符合我的需求:
TextQuery.new("'to be' OR NOT 'to_be'").match?("to be") # => true
TextQuery.new("-test").match?("some string of text") # => true
TextQuery.new("NOT test").match?("some string of text") # => true
TextQuery.new("a AND b").match?("b a") # => true
TextQuery.new("a AND b").match?("a c") # => false
q = TextQuery.new("a AND (b AND NOT (c OR d))")
q.match?("d a b") # => false
q.match?("b") # => false
q.match?("a b cdefg") # => true
TextQuery.new("a~").match?("adf") # => true
TextQuery.new("~a").match?("dfa") # => true
TextQuery.new("~a~").match?("daf") # => true
TextQuery.new("2~a~1").match?("edaf") # => true
TextQuery.new("2~a~2").match?("edaf") # => false
TextQuery.new("a", :ignorecase => true).match?("A b cD") # => true
一旦它在Ruby中实现,它就不适合我的平台,而且我不能仅仅为了解决这个问题而使用JRuby:
我找到了一个类似的问题,但无法从中得到答案: 布尔查询/表达式转换为具体语法树
谢谢!