有 SolrJ 查询生成器吗?

问题描述 投票:0回答:3

使用 solr 5.2.0 想知道是否有类似于 Elasticsearch 查询构建器 API 的查询构建器 API/Jar/Ckient,或者我们是否必须基本上执行 String Kungfu 来在 Solr 中构建查询?

solr solrj solrcloud solr5 solr-query-syntax
3个回答
9
投票

不幸的是,在 SolrJ 中,没有用于进入

q
参数的查询的构建器。

但是:由于 Solr 已经在 Lucene 上运行,我们也可以使用 Lucene QueryBuilder。生成的 Query 对象(例如 PhraseQuery)有一个

toString()
方法,为您提供查询字符串,否则您必须手动组装。


0
投票

有一个布尔查询生成器,旨在生成与 SolrJ 的 SolrQuery 一起使用的字符串。

网站

GitHub

这是由代码生成的查询:

+(
    (
        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));

-1
投票

您可能想要 使用 SolrQuery

  SolrQuery solrQuery=new SolrQuery();
  solrQuery.set("q",query);
  solrQuery.set("rows",5000);
  QueryResponse response=solrServers.query(solrQuery);

有关更多示例,请参阅此链接

© www.soinside.com 2019 - 2024. All rights reserved.