Example usage for org.apache.lucene.search.suggest.analyzing BlendedInfixSuggester BlendedInfixSuggester

List of usage examples for org.apache.lucene.search.suggest.analyzing BlendedInfixSuggester BlendedInfixSuggester

Introduction

In this page you can find the example usage for org.apache.lucene.search.suggest.analyzing BlendedInfixSuggester BlendedInfixSuggester.

Prototype

public BlendedInfixSuggester(Directory dir, Analyzer indexAnalyzer, Analyzer queryAnalyzer, int minPrefixChars,
        BlenderType blenderType, int numFactor, boolean commitOnBuild) throws IOException 

Source Link

Document

Create a new instance, loading from a previously built directory, if it exists.

Usage

From source file:org.apache.solr.spelling.suggest.fst.BlendedInfixLookupFactory.java

License:Apache License

@Override
public Lookup create(NamedList params, SolrCore core) {
    // mandatory parameter
    Object fieldTypeName = params.get(QUERY_ANALYZER);
    if (fieldTypeName == null) {
        throw new IllegalArgumentException(
                "Error in configuration: " + QUERY_ANALYZER + " parameter is mandatory");
    }/*from ww w  . jav  a 2  s .c  o m*/
    FieldType ft = core.getLatestSchema().getFieldTypeByName(fieldTypeName.toString());
    if (ft == null) {
        throw new IllegalArgumentException(
                "Error in configuration: " + fieldTypeName.toString() + " is not defined in the schema");
    }
    Analyzer indexAnalyzer = ft.getIndexAnalyzer();
    Analyzer queryAnalyzer = ft.getQueryAnalyzer();

    // optional parameters

    String indexPath = params.get(INDEX_PATH) != null ? params.get(INDEX_PATH).toString() : DEFAULT_INDEX_PATH;
    if (new File(indexPath).isAbsolute() == false) {
        indexPath = core.getDataDir() + File.separator + indexPath;
    }

    int minPrefixChars = params.get(MIN_PREFIX_CHARS) != null
            ? Integer.parseInt(params.get(MIN_PREFIX_CHARS).toString())
            : AnalyzingInfixSuggester.DEFAULT_MIN_PREFIX_CHARS;

    BlenderType blenderType = getBlenderType(params.get(BLENDER_TYPE));

    int numFactor = params.get(NUM_FACTOR) != null ? Integer.parseInt(params.get(NUM_FACTOR).toString())
            : BlendedInfixSuggester.DEFAULT_NUM_FACTOR;

    try {
        return new BlendedInfixSuggester(core.getSolrConfig().luceneMatchVersion,
                FSDirectory.open(new File(indexPath)), indexAnalyzer, queryAnalyzer, minPrefixChars,
                blenderType, numFactor) {
            @Override
            public List<LookupResult> lookup(CharSequence key, Set<BytesRef> contexts, int num,
                    boolean allTermsRequired, boolean doHighlight) throws IOException {
                List<LookupResult> res = super.lookup(key, contexts, num, allTermsRequired, doHighlight);
                if (doHighlight) {
                    List<LookupResult> res2 = new ArrayList<>();
                    for (LookupResult hit : res) {
                        res2.add(new LookupResult(hit.highlightKey.toString(), hit.highlightKey, hit.value,
                                hit.payload, hit.contexts));
                    }
                    res = res2;
                }

                return res;
            }
        };
    } catch (IOException e) {
        throw new RuntimeException();
    }
}