Example usage for org.apache.solr.common.params SolrParams toMap

List of usage examples for org.apache.solr.common.params SolrParams toMap

Introduction

In this page you can find the example usage for org.apache.solr.common.params SolrParams toMap.

Prototype

@Deprecated 
public static Map<String, String> toMap(NamedList params) 

Source Link

Document

Create a Map<String,String> from a NamedList given no keys are repeated

Usage

From source file:eu.europeana.assets.service.ir.text.bm25f.parser.BM25FQParserPlugin.java

License:Apache License

@SuppressWarnings("unchecked")
public void init(NamedList args) {
    bmParams = new BM25FParameters();
    if (args != null) {
        k1 = (Float) args.get("k1");
        String mainField = (String) args.get("mainField");

        String operator = (String) args.get("operator");
        if (operator != null) {
            if (operator.equals("OR")) {
                bmParams.performQueriesInOR();
            } else {
                Object tmp = args.get("minNumberOfTerms");
                if (tmp != null && tmp instanceof Integer) {
                    Integer minNumberOfTerms = (Integer) tmp;
                    if (minNumberOfTerms != null) {
                        bmParams.setMinNumberOfTerms(minNumberOfTerms);
                    }//from w  w  w  .ja  v  a 2 s .co m
                }
            }
        }

        Map<String, String> averageLengthFields = SolrParams.toMap((NamedList) args.get("averageLengthFields"));
        Map<String, String> fieldsBoost = SolrParams.toMap((NamedList) args.get("fieldsBoost"));
        Map<String, String> fieldsB = SolrParams.toMap((NamedList) args.get("fieldsB"));
        Object[] tmp = averageLengthFields.keySet().toArray();
        String[] fields = new String[tmp.length];
        for (int i = 0; i < tmp.length; i++) {
            fields[i] = (String) tmp[i];
        }
        Arrays.sort(fields);

        float[] boosts = new float[fields.length];
        float[] bParams = new float[fields.length];
        for (int i = 0; i < fields.length; i++) {
            boosts[i] = Float.parseFloat(fieldsBoost.get(fields[i]));
            bParams[i] = Float.parseFloat(fieldsB.get(fields[i]));
            float avg = Float.parseFloat(averageLengthFields.get(fields[i]));
            bmParams.setAverageLength(fields[i], avg);
            logger.info(fields[i] + "\tavgLen:" + avg + "\tboost:" + boosts[i] + "\tbParam " + bParams[i]);
        }
        bmParams.setK1(k1);
        bmParams.setBoosts(boosts);
        bmParams.setFields(fields);
        bmParams.setbParams(bParams);
        bmParams.setMainField(mainField);
        bmParams.setIdfField(mainField);
    }
}

From source file:eu.europeana.ranking.bm25f.BM25FParserPlugin.java

License:Apache License

@SuppressWarnings("unchecked")
public void init(NamedList args) {

    bmParams = new BM25FParameters();
    if (args == null) {
        return;/*  w  w  w.  j a va2 s.  c om*/
    }

    String mainField = (String) args.get("mainField");
    bmParams.setMainField(mainField);

    Object o = args.get("k1");
    if (o == null) {
        logger.warn("cannot find k1 parameter in solr config");
        logger.warn("using default values");
        return;
    }
    float k1 = (Float) o;
    logger.info("K1 = " + k1);
    o = args.get("fieldsBoost");
    if (o == null) {
        logger.warn("cannot find fieldsBoost parameter in solr config");
        logger.warn("using default values");
        return;
    }
    Map<String, String> fieldsBoost = SolrParams.toMap((NamedList) o);
    o = args.get("fieldsB");
    if (o == null) {
        logger.warn("cannot find fieldsB parameter in solr config");
        logger.warn("using default values");
        return;
    }
    Map<String, String> fieldsB = SolrParams.toMap((NamedList) o);
    List<String> f = new ArrayList<String>();
    for (String ffield : fieldsBoost.keySet()) {
        f.add(ffield);
    }

    Collections.sort(f);

    String[] fields = f.toArray(new String[f.size()]);

    Float[] boosts = new Float[fields.length];
    Float[] bParams = new Float[fields.length];

    for (int i = 0; i < fields.length; i++) {
        boosts[i] = Float.parseFloat(fieldsBoost.get(fields[i]));
        bParams[i] = Float.parseFloat(fieldsB.get(fields[i]));
    }

    bmParams.setFields(fields);

    bmParams.setBoosts(boosts);

    bmParams.setbParams(bParams);
    bmParams.setK1(k1);

}