你试过调查吗
org.apache.lucene.queryparser.classic.QueryParser
? 它具有从输入字符串返回Lucene查询对象的功能。例如:
String rawQuery = "name:abc AND age:26";
QueryParser parser = new QueryParser(Version.LUCENE_45, null, new WhitespaceAnalyzer(Version.LUCENE_45));
BooleanQuery query = (BooleanQuery) praser.parse(rawQuery);
query.clauses().get(0).setQuery(new TermQuery(new Term("name", "abcmodified")));
query.clauses().get(1).setQuery(new TermQuery(new Term("userage", "26")));
System.out.println(query);
将打印
+name:abcmodified +userage:26
,这基本上就是你想要的。显然,您可以使用递归方法进行更智能的处理,该方法根据查询类型(布尔、前缀、术语、模糊等)遍历查询
希望这有帮助!