如何从solr查询字符串中获取Query对象

时间:2017-01-08 00:17:15

标签: solr lucene

日志中提供了solr查询字符串,目的是分析查询以查找数字fq,术语等。在solr / lucene中是否有任何api / parser可用于解析整个查询字符串并获取使用的术语,使用的过滤器,使用的语言,使用的字段等。查看lucene提供的QueryParser,但它似乎没有帮助。

简单查询字符串示例:

q=*:*&facet.field=Language&facet=true&f.Language.facet.limit=101&rows=0&sort=score desc,DefaultRelevance desc&fl=xxNonexx&bmf=50&wt=xml

2 个答案:

答案 0 :(得分:0)

我认为你并不是真的在寻找一个解析器,而是一种调试查询的方法。幸运的是,Solr有一个调试参数,您可以将其用于解释here之类的目的。例如,您可以添加到您的查询中:

q=*:*&facet.field=Language&facet=true&f.Language.facet.limit=101&rows=0&sort=score desc,DefaultRelevance desc&fl=xxNonexx&bmf=50&debug=true&wt=xml

答案 1 :(得分:0)

您可以使用SolrRequestParsers.parseQueryString()方法将字符串转换为Solr Params。 Here's a link to documentation for it. 以下是一个例子。

String queryString = "q=*:*&facet.field=Language&facet=true&f.Language.facet.limit=101&rows=0&sort=score desc,DefaultRelevance desc&fl=xxNonexx&bmf=50&wt=xml";
MultiMapSolrParams solrParams = SolrRequestParsers.parseQueryString(String);

代码驻留在solr-core库中,因此您可能需要添加它。