我真的不知道如何确切地询问这个任务,但我希望标题已经说明了。
我正在寻找一种方法(框架/ lib),它提供了一个String.contains()函数的功能,该函数告诉我给定的String是否与搜索查询匹配。
String1: "word1 word2 word3"
String2: "word3 word4 word5"
我想问:
String1.contains("('word1' AND 'word2') OR 'word3'")") ==> TRUE
String2.contains("('word1' AND 'word2') OR 'word3')") ==> TRUE
String2.contains("('word1' AND 'word2')")") ==> FALSE
有什么东西能满足我的需求吗? 我想到了Lucene搜索框架之类的东西,但这似乎对我想要实现的东西有点过分。
感谢任何提示。如果这个问题已经回答,那么对不起,我还没找到。
由于 克里斯托弗
答案 0 :(得分:3)
Lucene确实有BooleanQuery
类型的查询,允许您这样做。但是如果你真的想做一些像你的例子一样简单的事情,为什么不使用普通的旧布尔运算符?
if ((string1.contains("word1") && string1.contains("word2"))
|| string1.contains("word3") {
// ...
}
答案 1 :(得分:1)
hamcrest匹配器库可能很有用,它允许您使用任何对象(不仅仅是字符串)构造此类约束/谓词。最新版本的Junit(4.x)使用此库来允许用户构造此类谓词表达式。