使用 solr 5.2.0 想知道是否有类似于 Elasticsearch 查询构建器 API 的查询构建器 API/Jar/Ckient,或者我们是否必须基本上执行 String Kungfu 来在 Solr 中构建查询?
不幸的是,在 SolrJ 中,没有用于进入
q
参数的查询的构建器。
但是:由于 Solr 已经在 Lucene 上运行,我们也可以使用 Lucene QueryBuilder。生成的 Query 对象(例如 PhraseQuery)有一个
toString()
方法,为您提供查询字符串,否则您必须手动组装。
有一个布尔查询生成器,旨在生成与 SolrJ 的 SolrQuery 一起使用的字符串。
这是由代码生成的查询:
+(
(
title:"Grand Illusion"~1
title:"Paradise Theatre"~1
)^0.3
(
title:"Night At The Opera"~1
title:"News Of The World"~1
)^0.3
(
title:"Van Halen"~1
title:1984~1
)^0.3
)
这是代码:
TermGroup group = new TermGroup().with(Occur. MUST);
TermGroup favoriteStyx = group.addGroup().withBoost(0.3f);
TermGroup favoriteQueen = group.addGroup().withBoost(0.3f);
TermGroup favoriteVanHalen = group.addGroup().withBoost(0.3f);
favoriteStyx.addTerm(new Term("title","Grand Illusion").with(Occur.SHOULD).withProximity(1));
favoriteStyx.addTerm(new Term("title","Paradise Theatre").with(Occur.SHOULD).withProximity(1));
favoriteQueen.addTerm(new Term("title","Night At The Opera").with(Occur.SHOULD).withProximity(1));
favoriteQueen.addTerm(new Term("title","News Of The World").with(Occur.SHOULD).withProximity(1));
favoriteVanHalen.addTerm(new Term("title","Van Halen").with(Occur.SHOULD).withProximity(1));
favoriteVanHalen.addTerm(new Term("title","1984").with(Occur.SHOULD).withProximity(1));
您可能想要 使用 SolrQuery
SolrQuery solrQuery=new SolrQuery();
solrQuery.set("q",query);
solrQuery.set("rows",5000);
QueryResponse response=solrServers.query(solrQuery);
有关更多示例,请参阅此链接