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

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

Introduction

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

Prototype

public FreeTextSuggester(Analyzer indexAnalyzer, Analyzer queryAnalyzer, int grams, byte separator) 

Source Link

Document

Instantiate, using the provided indexing and lookup analyzers, and specified model (2 = bigram, 3 = trigram ,etc.).

Usage

From source file:net.tourbook.search.FTSearchManager.java

License:Open Source License

private static Lookup setupSuggester_FreeText() {

    setupIndexReader();//from w  w w  .ja  va 2 s. c o  m

    final int numDocs = _indexReader.numDocs();
    if (numDocs == 0) {

        /*
         * Suggester for 0 documents causes an exception
         */

        return null;
    }

    final Lookup suggester[] = new FreeTextSuggester[1];

    Display.getDefault().syncExec(new Runnable() {
        @Override
        public void run() {

            BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
                @Override
                public void run() {

                    try {

                        final DocumentInputIterator inputIterator = new DocumentInputIterator(_indexReader);

                        //                     final Analyzer queryAnalyzer = new WhitespaceAnalyzer();
                        final Analyzer queryAnalyzer = new StandardAnalyzer(new CharArraySet(0, true));

                        suggester[0] = new FreeTextSuggester(queryAnalyzer, queryAnalyzer, 4, (byte) 0x20);

                        try {
                            suggester[0].build(inputIterator);
                        } catch (final IllegalArgumentException e) {

                            // java.lang.IllegalArgumentException: need at least one suggestion

                            /*
                             * This exception can occure when there are documents available but
                             * do not contain any content which the suggester can use.
                             */
                        }

                    } catch (final Exception e) {
                        StatusUtil.showStatus(e);
                    }
                }
            });
        }
    });

    return suggester[0];
}

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

License:Apache License

@Override
public Lookup create(NamedList params, SolrCore core) {
    Object fieldTypeName = params.get(QUERY_ANALYZER);
    if (fieldTypeName == null) {
        throw new IllegalArgumentException(
                "Error in configuration: " + QUERY_ANALYZER + " parameter is mandatory");
    }//from  w  w  w  .j  av  a2s. 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();

    int grams = (params.get(NGRAMS) != null) ? Integer.parseInt(params.get(NGRAMS).toString())
            : FreeTextSuggester.DEFAULT_GRAMS;

    byte separator = (params.get(SEPARATOR) != null)
            ? params.get(SEPARATOR).toString().getBytes(StandardCharsets.UTF_8)[0]
            : FreeTextSuggester.DEFAULT_SEPARATOR;

    return new FreeTextSuggester(indexAnalyzer, queryAnalyzer, grams, separator);
}