Lucene查询修改

时间:2017-12-04 10:35:05

标签: java lucene

我有一个要求,我想修改字符串格式的lucene查询值。 我将lucene查询作为来自用户界面的输入并将其传递给弹性。

例如

输入:姓名:“abc”和年龄:26

预期输出:名称:“abcmodified”和userage:26

如何在java中解析和修改字符串格式的lucene查询?

1 个答案:

答案 0 :(得分:1)

您是否尝试过调查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,这基本上就是您想要的。显然,您可以使用基于查询类型遍历查询的递归方法进行更智能的处理(布尔值,前缀,术语,模糊等...)

希望这有帮助!