gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:02:54 25 4
gpt4 key购买 nike

我正在使用 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

Lucene 在单独的服务器上运行,它希望 Query 对象执行搜索。由于 Query 或 BooleanQuery 不可序列化,我正在尝试转换上面的 String 查询并将其转换为 Query/Boolean 对象。

我找到了 this idea of converting BooleanQuery.toString() to String and back to BooleanQuery但我找不到任何 API 来将字符串查询转换为查询类型。

最佳答案

正如我在链接问题的评论中所解释的,只需将此字符串反馈给 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);

关于java - 如何序列化 Lucene 查询或将查询转换为字符串并返回查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25841494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com