List of usage examples for org.apache.lucene.search FuzzyQuery FuzzyQuery
public FuzzyQuery(Term term, int maxEdits, int prefixLength)
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); }