Example usage for org.apache.lucene.search FuzzyQuery FuzzyQuery

List of usage examples for org.apache.lucene.search FuzzyQuery FuzzyQuery

Introduction

In this page you can find the example usage for org.apache.lucene.search FuzzyQuery FuzzyQuery.

Prototype

public FuzzyQuery(Term term, int maxEdits, int prefixLength) 

Source Link

Document

Calls #FuzzyQuery(Term,int,int,int,boolean) FuzzyQuery(term, maxEdits, prefixLength, defaultMaxExpansions, defaultTranspositions) .

Usage

From source file:com.ifountain.compass.query.QueryConverter.java

License:Open Source License

private static Query _convertQuery(Query query, QueryConverterStrategy strategy) {
    if (query instanceof BooleanQuery) {
        BooleanQuery tmpq = (BooleanQuery) query;
        BooleanClause[] clauses = tmpq.getClauses();
        for (int i = 0; i < clauses.length; i++) {
            Query clauseQuery = _convertQuery(clauses[i].getQuery(), strategy);
            clauses[i].setQuery(clauseQuery);
        }/*  ww w .  ja  va 2  s.co m*/
        return tmpq;
    } else if (query instanceof TermQuery) {
        TermQuery tmpq = (TermQuery) query;
        Term term = tmpq.getTerm();
        Term convertedTerm = strategy.getConvertedTerm(term);
        return new TermQuery(convertedTerm);
    } else if (query instanceof WildcardQuery) {
        MultiTermQuery tmpq = (MultiTermQuery) query;
        Term term = tmpq.getTerm();
        Term convertedTerm = strategy.getConvertedTerm(term);
        return new WildcardQuery(convertedTerm);
    } else if (query instanceof PrefixQuery) {
        PrefixQuery tmpq = (PrefixQuery) query;
        Term term = tmpq.getPrefix();
        Term convertedTerm = strategy.getConvertedTerm(term);
        return new PrefixQuery(convertedTerm);
    } else if (query instanceof FuzzyQuery) {
        FuzzyQuery tmpq = (FuzzyQuery) query;
        Term term = tmpq.getTerm();
        Term convertedTerm = strategy.getConvertedTerm(term);
        return new FuzzyQuery(convertedTerm, tmpq.getMinSimilarity(), tmpq.getPrefixLength());
    } else if (query instanceof ConstantScoreRangeQuery) {
        ConstantScoreRangeQuery tmpq = (ConstantScoreRangeQuery) query;
        Term upperTerm = strategy.getConvertedTerm(new Term(tmpq.getField(), tmpq.getUpperVal()));
        Term lowerTerm = strategy.getConvertedTerm(new Term(tmpq.getField(), tmpq.getLowerVal()));
        return new ConstantScoreRangeQuery(upperTerm.field(), lowerTerm.text(), upperTerm.text(),
                tmpq.includesLower(), tmpq.includesUpper());
    }
    return query;
}

From source file:com.mysema.query.lucene.LuceneExpressions.java

License:Apache License

/**
 * Create a fuzzy query//ww w.  j  ava 2  s . c o  m
 *
 * @param path
 * @param value
 * @param maxEdits
 * @param prefixLength
 * @return
 */
public static BooleanExpression fuzzyLike(Path<String> path, String value, int maxEdits, int prefixLength) {
    Term term = new Term(path.getMetadata().getName(), value);
    return new QueryElement(new FuzzyQuery(term, maxEdits, prefixLength));
}

From source file:com.mysema.query.lucene.LuceneUtils.java

License:Apache License

/**
 * Create a fuzzy query/*ww  w  .ja va 2 s.c  om*/
 * 
 * @param path
 * @param value
 * @param minimumSimilarity
 * @param prefixLength
 * @return
 */
public static BooleanExpression fuzzyLike(Path<String> path, String value, float minimumSimilarity,
        int prefixLength) {
    Term term = new Term(path.getMetadata().getExpression().toString(), value);
    return new QueryElement(new FuzzyQuery(term, minimumSimilarity, prefixLength));
}

From source file:com.querydsl.lucene3.LuceneExpressions.java

License:Apache License

/**
 * Create a fuzzy query//from w w w .  j  ava 2  s. c  om
 *
 * @param path path
 * @param value value to match
 * @param minimumSimilarity a value between 0 and 1 to set the required similarity
 * @param prefixLength length of common (non-fuzzy) prefix
 * @return condition
 */
public static BooleanExpression fuzzyLike(Path<String> path, String value, float minimumSimilarity,
        int prefixLength) {
    Term term = new Term(path.getMetadata().getName(), value);
    return new QueryElement(new FuzzyQuery(term, minimumSimilarity, prefixLength));
}

From source file:edu.unika.aifb.graphindex.searcher.entity.EntitySearcher.java

License:Open Source License

public Collection<String> searchConceptWithClause(IndexSearcher searcher, Query clause) {
    Collection<String> result = new HashSet<String>();
    try {/*w  w w. ja v  a 2 s  . c om*/
        Hits hits = searcher.search(clause);
        /********* add fuzzy query funtion here **************/
        if (hits == null || hits.length() == 0) {
            Set<Term> terms = new HashSet<Term>();
            clause.extractTerms(terms);
            //if clause query is a term query
            if (terms.size() != 0) {
                BooleanQuery query = new BooleanQuery();
                for (Term term : terms) {
                    query.add(new FuzzyQuery(term, 0.8f, 1), Occur.MUST);
                }
                hits = searcher.search(query);
                log.debug(query + " " + hits);
            }
        }
        /************************************************/

        for (int i = 0; i < hits.length(); i++) {
            Document doc = hits.doc(i);
            float score = hits.score(i);
            if (score >= SCHEMA_THRESHOLD) {
                String type = doc.get(Constant.TYPE_FIELD);
                if (type == null) {
                    System.err.println("type is null!");
                    continue;
                }

                if (type.equals(TypeUtil.CONCEPT)) {
                    result.add(doc.get(Constant.URI_FIELD));
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}

From source file:edu.unika.aifb.graphindex.searcher.entity.EntitySearcher.java

License:Open Source License

public Collection<String> searchAttributesWithClause(IndexSearcher searcher, Query clause) {
    Collection<String> result = new HashSet<String>();
    try {// www  . ja v a2  s. c  om
        Hits hits = searcher.search(clause);
        /********* add fuzzy query funtion here **************/
        if (hits == null || hits.length() == 0) {
            Set<Term> terms = new HashSet<Term>();
            clause.extractTerms(terms);
            //if clause query is a term query
            if (terms.size() != 0) {
                BooleanQuery query = new BooleanQuery();
                for (Term term : terms) {
                    query.add(new FuzzyQuery(term, 0.8f, 1), Occur.MUST);
                }
                hits = searcher.search(query);
                log.debug(query + " " + hits);
            }
        }
        /************************************************/

        for (int i = 0; i < hits.length(); i++) {
            Document doc = hits.doc(i);
            float score = hits.score(i);
            if (score >= SCHEMA_THRESHOLD) {
                String type = doc.get(Constant.TYPE_FIELD);
                if (type == null) {
                    System.err.println("type is null!");
                    continue;
                }

                if (type.equals(TypeUtil.ATTRIBUTE)) {
                    result.add(doc.get(Constant.URI_FIELD));
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return result;
}

From source file:jp.scaleout.elasticsearch.plugins.queryparser.classic.QueryParserBase.java

License:Apache License

/**
 * Builds a new FuzzyQuery instance//from  www .j  a v a  2 s  . co m
 * @param term Term
 * @param minimumSimilarity minimum similarity
 * @param prefixLength prefix length
 * @return new FuzzyQuery Instance
 */
protected Query newFuzzyQuery(Term term, float minimumSimilarity, int prefixLength) {
    // FuzzyQuery doesn't yet allow constant score rewrite
    String text = term.text();
    int numEdits = FuzzyQuery.floatToEdits(minimumSimilarity, text.codePointCount(0, text.length()));
    return new FuzzyQuery(term, numEdits, prefixLength);
}

From source file:nl.inl.blacklab.search.lucene.SpanFuzzyQuery.java

License:Apache License

@Override
public Query rewrite(IndexReader reader) throws IOException {
    FuzzyQuery fuzzyQuery = new FuzzyQuery(term, maxEdits, prefixLength);

    rewrittenFuzzyQuery = fuzzyQuery.rewrite(reader);
    if (rewrittenFuzzyQuery instanceof BooleanQuery) {
        // BooleanQuery; make SpanQueries from each of the TermQueries and combine with OR
        BooleanClause[] clauses = ((BooleanQuery) rewrittenFuzzyQuery).getClauses();
        SpanQuery[] spanQueries = new SpanQuery[clauses.length];
        for (int i = 0; i < clauses.length; i++) {
            BooleanClause clause = clauses[i];

            TermQuery termQuery = (TermQuery) clause.getQuery();

            // ONLY DIFFERENCE WITH SpanFuzzyQuery:
            // Use a BLSpanTermQuery instead of default Lucene one
            // because we need to override getField() to only return the base field name,
            // not the complete field name with the property.
            spanQueries[i] = new BLSpanTermQuery(termQuery.getTerm());
            spanQueries[i].setBoost(termQuery.getBoost());
        }/*  w w  w  .j  av  a  2  s.  c om*/
        SpanQuery query = new BLSpanOrQuery(spanQueries);
        query.setBoost(fuzzyQuery.getBoost());
        return query;
    }

    // Not a BooleanQuery, just a TermQuery. Convert to a SpanTermQuery.
    SpanQuery query = new BLSpanOrQuery(new BLSpanTermQuery(((TermQuery) rewrittenFuzzyQuery).getTerm()));
    query.setBoost(fuzzyQuery.getBoost());
    return query;

}

From source file:org.apache.fuzzydb.queryParser.QueryParser.java

License:Open Source License

/**
 * Builds a new FuzzyQuery instance/*w  w  w  .jav a  2  s .  c  o m*/
 * 
 * @param term Term
 * @param minimumSimilarity minimum similarity
 * @param prefixLength prefix length
 * @return new FuzzyQuery Instance
 */
protected Query newFuzzyQuery(Term term, float minimumSimilarity, int prefixLength) {
    // FuzzyQuery doesn't yet allow constant score rewrite
    return new FuzzyQuery(term, minimumSimilarity, prefixLength);
}

From source file:org.compass.core.lucene.engine.query.LuceneSearchEngineQueryBuilder.java

License:Apache License

public SearchEngineQuery fuzzy(String resourcePropertyName, String value, float minimumSimilarity,
        int prefixLength) {
    Query query = new FuzzyQuery(new Term(resourcePropertyName, value), minimumSimilarity, prefixLength);
    return new LuceneSearchEngineQuery(searchEngineFactory, query);
}