Solr自定义查询解析器" fl"参数未返回所需结果

时间:2017-09-04 12:01:59

标签: json parsing plugins solr

我目前正致力于用Solr替换现有的搜索平台。我是Solr的新手,目前正在使用Solr Version 6.6.0。旧系统接受带有搜索参数的JSON对象。因此,我被要求实现一个自定义查询解析器,它接受JSON格式的查询字符串 基本上没有其他参数传递给Solr,除了" q"其中包含以JSON格式的字符串编码的所有必需参数。然后,查询解析器本身提取执行查询所需的所有公共参数和本地参数     除了" fl"参数不会给出期望的结果。这意味着查询结果由文档中存在的所有字段组成。代码看起来像这样;

public static final String FIELD_LIST = "fl";

用于存储键值对的集合。

HashMap<String,Object> paramMap = new HashMap<String, Object>();

解码并格式化字段列表。

String ifld = getFieldList();

参数放在集合中。

paramMap.put(Constants.FIELD_LIST,ifld);

然后生成SolrParams。

return SolrParams.toSolrParams(new NamedList<>(paramMap));

每个查询参数都以这种方式处理,最后在查询解析器parse()方法中我有这个。

//calls the factory method to get the appropriate request type translator
        JSONRequestTranslator jrt = (JSONRequestTranslator)JSONQParser.getTranslator(requestType);

//converts the arguments to solrparams.
        qstr = jrt.getQueryString();
        localParams = jrt.getLocalParams();
        params = jrt.getParams();
        req.setParams(SolrParams.wrapDefaults(params, this.req.getParams()));

        return jrt.parse(qstr, localParams, params, req);
实现JSONRequestTranslator接口的类中的

parse()方法如下所示

@Override
public Query parse(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) throws SyntaxError {
    return new DisMaxQParser(qstr, localParams, params, req).parse();       
}

这很好但是&#34; fl&#34;参数似乎没有效果。我在solrconfig.xml文件中没有默认设置,而在调试时我总是找到&#34; fl&#34;参数设置为正确的值。我已经尝试了其他几种方法,比如编写自定义搜索组件插件,但请解释如何解决这个问题以及我在这里缺少什么。谢谢。

0 个答案:

没有答案
相关问题