Package org.apache.lucene.queries

Examples of org.apache.lucene.queries.BooleanFilter


      maxLat = Math.min(maxLat, Math.toRadians(90));
      minLng = Math.toRadians(-180);
      maxLng = Math.toRadians(180);
    }

    BooleanFilter f = new BooleanFilter();

    // Add latitude range filter:
    f.add(NumericRangeFilter.newDoubleRange("latitude", Math.toDegrees(minLat), Math.toDegrees(maxLat), true, true),
          BooleanClause.Occur.MUST);

    // Add longitude range filter:
    if (minLng > maxLng) {
      // The bounding box crosses the international date
      // line:
      BooleanFilter lonF = new BooleanFilter();
      lonF.add(NumericRangeFilter.newDoubleRange("longitude", Math.toDegrees(minLng), null, true, true),
               BooleanClause.Occur.SHOULD);
      lonF.add(NumericRangeFilter.newDoubleRange("longitude", null, Math.toDegrees(maxLng), true, true),
               BooleanClause.Occur.SHOULD);
      f.add(lonF, BooleanClause.Occur.MUST);
    } else {
      f.add(NumericRangeFilter.newDoubleRange("longitude", Math.toDegrees(minLng), Math.toDegrees(maxLng), true, true),
            BooleanClause.Occur.MUST);
View Full Code Here


      } else if (recordFilterForSearch != null && readFilter == null) {
        docFilter = recordFilterForSearch;
      } else if (recordFilterForSearch != null && readFilter != null) {
        // @TODO dangerous call because of the bitsets that booleanfilter
        // creates.
        BooleanFilter booleanFilter = new BooleanFilter();
        booleanFilter.add(recordFilterForSearch, Occur.MUST);
        booleanFilter.add(readFilter, Occur.MUST);
        docFilter = booleanFilter;
      } else {
        docFilter = null;
      }
      Query userQuery = QueryParserUtil.parseQuery(simpleQuery.query, simpleQuery.rowQuery, fieldManager,
View Full Code Here

  private Filter buildNewFilter(Query query, ConcurrentMap<String, String> filterAlias, FilterParser filterParser)
      throws ParseException {
    if (query instanceof BooleanQuery) {
      BooleanQuery booleanQuery = (BooleanQuery) query;
      BooleanFilter booleanFilter = new BooleanFilter();
      for (BooleanClause clause : booleanQuery.clauses()) {
        booleanFilter.add(buildNewFilter(clause.getQuery(), filterAlias, filterParser), clause.getOccur());
      }
      return booleanFilter;
    } else if (query instanceof TermQuery) {
      TermQuery termQuery = (TermQuery) query;
      Term term = termQuery.getTerm();
View Full Code Here

      maxLat = Math.min(maxLat, Math.toRadians(90));
      minLng = Math.toRadians(-180);
      maxLng = Math.toRadians(180);
    }

    BooleanFilter f = new BooleanFilter();

    // Add latitude range filter:
    f.add(NumericRangeFilter.newDoubleRange("latitude", Math.toDegrees(minLat), Math.toDegrees(maxLat), true, true),
          BooleanClause.Occur.MUST);

    // Add longitude range filter:
    if (minLng > maxLng) {
      // The bounding box crosses the international date
      // line:
      BooleanFilter lonF = new BooleanFilter();
      lonF.add(NumericRangeFilter.newDoubleRange("longitude", Math.toDegrees(minLng), null, true, true),
               BooleanClause.Occur.SHOULD);
      lonF.add(NumericRangeFilter.newDoubleRange("longitude", null, Math.toDegrees(maxLng), true, true),
               BooleanClause.Occur.SHOULD);
      f.add(lonF, BooleanClause.Occur.MUST);
    } else {
      f.add(NumericRangeFilter.newDoubleRange("longitude", Math.toDegrees(minLng), Math.toDegrees(maxLng), true, true),
            BooleanClause.Occur.MUST);
View Full Code Here

    this.factory = factory;
  }

  @Override
  public Filter getFilter(Element e) throws ParserException {
    BooleanFilter bf = new BooleanFilter();
    NodeList nl = e.getChildNodes();

    for (int i = 0; i < nl.getLength(); i++) {
      Node node = nl.item(i);
      if (node.getNodeName().equals("Clause")) {
        Element clauseElem = (Element) node;
        BooleanClause.Occur occurs = BooleanQueryBuilder.getOccursValue(clauseElem);

        Element clauseFilter = DOMUtils.getFirstChildOrFail(clauseElem);
        Filter f = factory.getFilter(clauseFilter);
        bf.add(new FilterClause(f, occurs));
      }
    }

    return bf;
  }
View Full Code Here

            case EQUAL:
                return (value instanceof Long || value instanceof Integer) ?
                        NumericRangeFilter.newLongRange(key, value.longValue(), value.longValue(), true, true) :
                        NumericRangeFilter.newDoubleRange(key, value.doubleValue(), value.doubleValue(), true, true);
            case NOT_EQUAL:
                BooleanFilter q = new BooleanFilter();
                if (value instanceof Long || value instanceof Integer) {
                    q.add(NumericRangeFilter.newLongRange(key, Long.MIN_VALUE, value.longValue(), true, false), BooleanClause.Occur.SHOULD);
                    q.add(NumericRangeFilter.newLongRange(key, value.longValue(), Long.MAX_VALUE, false, true), BooleanClause.Occur.SHOULD);
                } else {
                    q.add(NumericRangeFilter.newDoubleRange(key, Double.MIN_VALUE, value.doubleValue(), true, false), BooleanClause.Occur.SHOULD);
                    q.add(NumericRangeFilter.newDoubleRange(key, value.doubleValue(), Double.MAX_VALUE, false, true), BooleanClause.Occur.SHOULD);
                }
                return q;
            case LESS_THAN:
                return (value instanceof Long || value instanceof Integer) ?
                        NumericRangeFilter.newLongRange(key, Long.MIN_VALUE, value.longValue(), true, false) :
View Full Code Here

//                    value = ((String) value).toLowerCase();
//                    return new RegexpQuery(new Term(key,(String)value));
                } else if (titanPredicate == Cmp.EQUAL) {
                    return new TermsFilter(new Term(key,(String)value));
                } else if (titanPredicate == Cmp.NOT_EQUAL) {
                    BooleanFilter q = new BooleanFilter();
                    q.add(new TermsFilter(new Term(key,(String)value)), BooleanClause.Occur.MUST_NOT);
                    return q;
                } else
                    throw new IllegalArgumentException("Relation is not supported for string value: " + titanPredicate);
            } else if (value instanceof Geoshape) {
                Preconditions.checkArgument(titanPredicate == Geo.WITHIN, "Relation is not supported for geo value: " + titanPredicate);
                Shape shape = ((Geoshape) value).convert2Spatial4j();
                SpatialArgs args = new SpatialArgs(SpatialOperation.IsWithin, shape);
                return getSpatialStrategy(key).makeFilter(args);
            } else throw new IllegalArgumentException("Unsupported type: " + value);
        } else if (condition instanceof Not) {
            BooleanFilter q = new BooleanFilter();
            q.add(convertQuery(((Not) condition).getChild(),informations), BooleanClause.Occur.MUST_NOT);
            return q;
        } else if (condition instanceof And) {
            BooleanFilter q = new BooleanFilter();
            for (Condition c : condition.getChildren()) {
                q.add(convertQuery(c,informations), BooleanClause.Occur.MUST);
            }
            return q;
        } else if (condition instanceof Or) {
            BooleanFilter q = new BooleanFilter();
            for (Condition c : condition.getChildren()) {
                q.add(convertQuery(c,informations), BooleanClause.Occur.SHOULD);
            }
            return q;
        } else throw new IllegalArgumentException("Invalid condition: " + condition);
    }
View Full Code Here

        IndexReader reader = DirectoryReader.open(FSDirectory.open(path));
        IndexSearcher searcher = new IndexSearcher(reader);
        analyzer = new StandardAnalyzer(Version.LUCENE_41);

        //Auesee
        BooleanFilter filter = new BooleanFilter();
        //filter.add(new TermsFilter(new Term("name_txt","know")), BooleanClause.Occur.MUST);

        SpatialArgs args = new SpatialArgs(SpatialOperation.Intersects,Geoshape.circle(51.666167,6.58905,450).convert2Spatial4j());
        //filter.add(getSpatialStrategy("location").makeFilter(args), BooleanClause.Occur.MUST);

        filter.add(NumericRangeFilter.newLongRange("time",(long)1000342034,(long)1000342034,true,true), BooleanClause.Occur.MUST);
//        filter.add(NumericRangeFilter.newLongRange("time",(long)1000342034-100,Long.MAX_VALUE,true,true), BooleanClause.Occur.MUST);
//        filter.add(NumericRangeFilter.newLongRange("time",Long.MIN_VALUE,(long)1000342034+300,true,true), BooleanClause.Occur.MUST);


        filter.add(new PrefixFilter(new Term("city_str","B")), BooleanClause.Occur.MUST);


        TopDocs docs = searcher.search(new MatchAllDocsQuery(), filter, MAX_RESULT);
        if (docs.totalHits>=MAX_RESULT) throw new RuntimeException("Max results exceeded: " + MAX_RESULT);
View Full Code Here

TOP

Related Classes of org.apache.lucene.queries.BooleanFilter

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.