当前位置: 首页 > 知识库问答 >
问题:

如何序列化Lucene查询或将查询转换为字符串并返回查询

糜征
2023-03-14

我使用的是Lucene 4.7.2版本。

我已经索引了一些信息,并创建了一个UI以在该界面上查询。我根据用户输入创建了一个BooleanQuery,

BooleanQuery bq = new BooleanQuery();
NumericRangeQuery<Integer> nrq = NumericRangeQuery.newIntRange("age", 20, 30, true, true);
bq.add(nrq, BooleanClause.Occur.MUST);

Term term = new Term("name", "einstein");
TermQuery termQuery = new TermQuery(term);
bq.add(termQuery, BooleanClause.Occur.MUST);

System.out.println(bq.toString());
+age[20 TO 30] AND name:einstein

共有1个答案

吕翰飞
2023-03-14

正如我在链接问题的注释中解释的那样,只需将该字符串反馈给QueryParser,就可以返回相同的Query对象。

import org.apache.lucene.queryparser.classic.QueryParser;

...

String queryString = "+age[20 TO 30] AND name:einstein";
Query query = new QueryParser(Version.LUCENE_4_7, null, <yourAnalyzer>)
                   .parse(queryString);
 类似资料:
  • 问题内容: 您是否知道可以将Map转换为URL友好的查询字符串的任何实用程序类/库? 例: 我有一张地图: 我想得到: 最终输出 问题答案: 我看到的最可靠的组件是Apache Http Compoments(HttpClient 4.0)的URLEncodedUtils类。 该方法是您所需要的。 它不使用map,因此您可以使用重复的参数名称,例如, 并非我建议使用这种类型的参数名称。

  • 我使用了cakephp Mysql到mongodb查询组件,即将Mysql查询转换到mongodb中,但是当查询有多个括号时代码停止工作,我还尝试将http://www.querymongo.com/site上的查询转换为相同的问题,

  • 下面的lucene查询返回空字符串请帮忙,提前谢谢

  • 我在用Lucene。Net版本3.0。3. 下面是Lucene查询转换为字符串,带有字段键、值和容差。 我想把字符串值传递给Api,在那里我需要转换回Lucene查询。 我使用字段FirstName和LastName尝试了QueryParser和MultifieldQueryparser,但在传递时没有返回确切的查询。

  • 我想在JPA 2.1中将“命名查询”转换为“SQL查询”,并在运行之前对其进行更改。 例如,我有一个命名查询:从CU所在的客户中选择CU。代码=?1,我希望在PAR之后获得查询并对其进行转换和编辑(例如添加模式名称)并创建此查询:从db1.cc1cust cu中选择*其中cu.cc1cod=?1. 我该怎么做? 问候

  • 问题内容: 我想将以下SQL查询转换为Elasticsearch之一。谁能帮上忙 我尝试了以下方法: 但不确定我是否做对了,因为它无法验证结果。似乎要在聚合内添加查询。 问题答案: 假设您使用Elasticsearch 2.x,则有可能在Elasticsearch中 具有 -semantics。我不知道2.0之前的可能性。 您可以使用新的Pipeline Aggregation Bucket Se