Java 类org.apache.lucene.search.QueryWrapperFilter 实例源码

项目:search    文件:SpatialFileQueryMaker.java   
protected Query makeQueryFromShape(Shape shape) {
  SpatialArgs args = new SpatialArgs(operation, shape);
  if (!Double.isNaN(distErrPct))
    args.setDistErrPct(distErrPct);

  if (score) {
    ValueSource valueSource = strategy.makeDistanceValueSource(shape.getCenter());
    return new CustomScoreQuery(strategy.makeQuery(args), new FunctionQuery(valueSource));
  } else {
    //strategy.makeQuery() could potentially score (isn't well defined) so instead we call
    // makeFilter() and wrap

    Filter filter = strategy.makeFilter(args);
    if (filter instanceof QueryWrapperFilter) {
      return ((QueryWrapperFilter)filter).getQuery();
    } else {
      return new ConstantScoreQuery(filter);
    }
  }
}
项目:search    文件:ChainedFilterTest.java   
public void testWithCachingFilter() throws Exception {
  Directory dir = newDirectory();
  RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
  IndexReader reader = writer.getReader();
  writer.close();

  IndexSearcher searcher = newSearcher(reader);

  Query query = new TermQuery(new Term("none", "none"));

  QueryWrapperFilter queryFilter = new QueryWrapperFilter(query);
  CachingWrapperFilter cachingFilter = new CachingWrapperFilter(queryFilter);

  searcher.search(query, cachingFilter, 1);

  CachingWrapperFilter cachingFilter2 = new CachingWrapperFilter(queryFilter);
  Filter[] chain = new Filter[2];
  chain[0] = cachingFilter;
  chain[1] = cachingFilter2;
  ChainedFilter cf = new ChainedFilter(chain);

  // throws java.lang.ClassCastException: org.apache.lucene.util.OpenBitSet cannot be cast to java.util.BitSet
  searcher.search(new MatchAllDocsQuery(), cf, 1);
  reader.close();
  dir.close();
}
项目:search    文件:TestExpressionSorts.java   
public void testQueries() throws Exception {
  int n = atLeast(4);
  for (int i = 0; i < n; i++) {
    Filter odd = new QueryWrapperFilter(new TermQuery(new Term("oddeven", "odd")));
    assertQuery(new MatchAllDocsQuery(), null);
    assertQuery(new TermQuery(new Term("english", "one")), null);
    assertQuery(new MatchAllDocsQuery(), odd);
    assertQuery(new TermQuery(new Term("english", "four")), odd);
    BooleanQuery bq = new BooleanQuery();
    bq.add(new TermQuery(new Term("english", "one")), BooleanClause.Occur.SHOULD);
    bq.add(new TermQuery(new Term("oddeven", "even")), BooleanClause.Occur.SHOULD);
    assertQuery(bq, null);
    // force in order
    bq.add(new TermQuery(new Term("english", "two")), BooleanClause.Occur.SHOULD);
    bq.setMinimumNumberShouldMatch(2);
    assertQuery(bq, null);
  }
}
项目:webdsl    文件:FieldConstraintFilter.java   
@org.hibernate.search.annotations.Factory
public Filter buildFilter(){
    QueryParser qp = new QueryParser(Version.LUCENE_CURRENT,field, analyzer);
    Query q;
    try {
        if(allowLuceneSyntax)
            q = qp.parse(value);
        else
            q = qp.parse(QueryParser.escape(value));
    } catch (ParseException e) {
        org.webdsl.logging.Logger.error("Error while parsing query in field filter: ");
        org.webdsl.logging.Logger.error("EXCEPTION",e);
        q = new TermQuery(new Term(field, value));
    }
    Filter filter = new QueryWrapperFilter(q);
    filter = new CachingWrapperFilter( filter );
    return filter;
}
项目:irplus    文件:DefaultInstitutionalItemSearchService.java   
/**
 * Set up the filters for collections - this is for searching within collections.
 * 
 * @param collection - to search within
 * @return - created filter
 * @throws ParseException
 */
private List<Filter> getCollectionFilters(InstitutionalCollection collection) throws ParseException
{
    List<Filter> filters = new LinkedList<Filter>();

       //isolate the collection root
    Term t = new Term("collection_root_id", NumericUtils.longToPrefixCoded(collection.getTreeRoot().getId()));
    Query subQuery = new TermQuery( t );
    filters.add(new QueryWrapperFilter(subQuery));


    //isolate the range of children
    subQuery = NumericRangeQuery.newLongRange("collection_left_value", collection.getLeftValue(), collection.getRightValue(), true, true);
    filters.add(new QueryWrapperFilter(subQuery));
    return filters;
}
项目:irplus    文件:DefaultResearcherSearchService.java   
/**
 * Execute the sub query facets and return the search results
 * @throws ParseException 
 * @throws IOException 
 */
private List<Filter> getSubQueryFilters( List<FacetFilter> filters, 
        IndexSearcher searcher) throws ParseException, IOException
{
    List<Filter> luceneFilters = new LinkedList<Filter>();

    for(FacetFilter filter : filters)
    {   
        if(log.isDebugEnabled())
        {
            log.debug("adding filter for field " + filter.getField() + " and query " + filter.getQuery());
        }
        QueryParser subQueryParser = new QueryParser(Version.LUCENE_35, filter.getField(), analyzer);
        subQueryParser.setDefaultOperator(QueryParser.AND_OPERATOR);
        String fixedQuery = SearchHelper.prepareFacetSearchString(filter.getQuery(), false);
        fixedQuery = "\"" + fixedQuery + "\"";
        Query subQuery = subQueryParser.parse(fixedQuery);
        if(log.isDebugEnabled())
        {
            log.debug("sub query ing getSubQueryFilters is " + fixedQuery);
        }
        luceneFilters.add(new QueryWrapperFilter(subQuery));
    }

    return luceneFilters;
}
项目:Android-Indexing-Service    文件:FileSearcher.java   
/**
 * Creates a directory filter; also filters a range of pages
 * @param constrainField The field that contains the directory info
 * @param constrainValues The directories to which the filters shold limit
 * @return The created filter
 */
private Filter getFilter(String constrainField, List<String> constrainValues,
                         int type, int startPage,
                         int endPage){
    BooleanQuery cqry = new BooleanQuery();
    if(constrainValues.size() == 1){
        cqry.add(new TermQuery(new Term(constrainField, constrainValues.get(0))),
                BooleanClause.Occur.MUST);
    } else {
        for(String s : constrainValues) {
            cqry.add(new TermQuery(new Term(constrainField, s)),
                    BooleanClause.Occur.SHOULD);
        }
    }
    if(type == FileSearcher.QUERY_BOOLEAN && startPage != -1 && endPage != -1) {
        cqry.add(NumericRangeQuery.newIntRange("page", startPage, endPage, true, true),
                BooleanClause.Occur.MUST);
    }
    return new QueryWrapperFilter(cqry);
}
项目:NYBC    文件:ChainedFilterTest.java   
public void testWithCachingFilter() throws Exception {
  Directory dir = newDirectory();
  RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
  IndexReader reader = writer.getReader();
  writer.close();

  IndexSearcher searcher = newSearcher(reader);

  Query query = new TermQuery(new Term("none", "none"));

  QueryWrapperFilter queryFilter = new QueryWrapperFilter(query);
  CachingWrapperFilter cachingFilter = new CachingWrapperFilter(queryFilter);

  searcher.search(query, cachingFilter, 1);

  CachingWrapperFilter cachingFilter2 = new CachingWrapperFilter(queryFilter);
  Filter[] chain = new Filter[2];
  chain[0] = cachingFilter;
  chain[1] = cachingFilter2;
  ChainedFilter cf = new ChainedFilter(chain);

  // throws java.lang.ClassCastException: org.apache.lucene.util.OpenBitSet cannot be cast to java.util.BitSet
  searcher.search(new MatchAllDocsQuery(), cf, 1);
  reader.close();
  dir.close();
}
项目:incubator-blur    文件:AliasBlurFilterCache.java   
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();
    String key = term.toString();
    String queryStr = filterAlias.get(key);
    if (queryStr == null) {
      return new QueryWrapperFilter(termQuery);
    }
    String id = getId(key);
    return new FilterCache(id, new QueryWrapperFilter(filterParser.parse(queryStr)));
  } else {
    return new QueryWrapperFilter(query);
  }
}
项目:incubator-blur    文件:IndexManagerTest.java   
@Test
public void testFetchRowByRecordIdWithFilterNoHit() throws Exception {
  IndexManagerTestReadInterceptor.interceptor = new ReadInterceptor(null) {
    @Override
    public Filter getFilter() {
      return new QueryWrapperFilter(new TermQuery(new Term(FAMILY + ".testcol1", "NOHIT")));
    }
  };
  Selector selector = new Selector().setRowId("row-1").setRecordId("record-1").setRecordOnly(true);
  FetchResult fetchResult = new FetchResult();
  indexManager.fetchRow(TABLE, selector, fetchResult);
  assertFalse(fetchResult.deleted);
  assertFalse(fetchResult.exists);
  assertEquals(TABLE, fetchResult.table);
  assertNull(fetchResult.rowResult);
  assertNull(fetchResult.recordResult);
}
项目:BioSolr    文件:XJoinQParserPlugin.java   
@Override
@SuppressWarnings("unchecked")
public Query parse() throws SyntaxError {
  Method method = Method.valueOf(localParams.get(METHOD, Method.termsFilter.name()));
  JoinSpec<T> js = JoinSpec.parse(localParams.get(QueryParsing.V));
  Iterator<T> it = js.iterator(this);
  if (joinField == null) {
    throw new Exception("No XJoin component referenced by query");
  }
  FieldType ft = req.getSchema().getFieldTypeNoEx(joinField);
  Iterator<BytesRef> bytesRefs = new TransformIterator(it, transformer(ft));
  if (! bytesRefs.hasNext()) {
    return new BooleanQuery.Builder().build(); // matches nothing
  }
  Query query = method.makeQuery(joinField, bytesRefs);
  return new SolrConstantScoreQuery(new QueryWrapperFilter(query));
}
项目:read-open-source-code    文件:SpatialFileQueryMaker.java   
protected Query makeQueryFromShape(Shape shape) {
  SpatialArgs args = new SpatialArgs(operation, shape);
  if (!Double.isNaN(distErrPct))
    args.setDistErrPct(distErrPct);

  if (score) {
    ValueSource valueSource = strategy.makeDistanceValueSource(shape.getCenter());
    return new CustomScoreQuery(strategy.makeQuery(args), new FunctionQuery(valueSource));
  } else {
    //strategy.makeQuery() could potentially score (isn't well defined) so instead we call
    // makeFilter() and wrap

    Filter filter = strategy.makeFilter(args);
    if (filter instanceof QueryWrapperFilter) {
      return ((QueryWrapperFilter)filter).getQuery();
    } else {
      return new ConstantScoreQuery(filter);
    }
  }
}
项目:read-open-source-code    文件:SpatialFileQueryMaker.java   
protected Query makeQueryFromShape(Shape shape) {
  SpatialArgs args = new SpatialArgs(operation, shape);
  if (!Double.isNaN(distErrPct))
    args.setDistErrPct(distErrPct);

  if (score) {
    ValueSource valueSource = strategy.makeDistanceValueSource(shape.getCenter());
    return new CustomScoreQuery(strategy.makeQuery(args), new FunctionQuery(valueSource));
  } else {
    //strategy.makeQuery() could potentially score (isn't well defined) so instead we call
    // makeFilter() and wrap

    Filter filter = strategy.makeFilter(args);
    if (filter instanceof QueryWrapperFilter) {
      return ((QueryWrapperFilter)filter).getQuery();
    } else {
      return new ConstantScoreQuery(filter);
    }
  }
}
项目:Maskana-Gestor-de-Conocimiento    文件:SpatialFileQueryMaker.java   
protected Query makeQueryFromShape(Shape shape) {
  SpatialArgs args = new SpatialArgs(operation, shape);
  if (!Double.isNaN(distErrPct))
    args.setDistErrPct(distErrPct);

  if (score) {
    ValueSource valueSource = strategy.makeDistanceValueSource(shape.getCenter());
    return new CustomScoreQuery(strategy.makeQuery(args), new FunctionQuery(valueSource));
  } else {
    //strategy.makeQuery() could potentially score (isn't well defined) so instead we call
    // makeFilter() and wrap

    Filter filter = strategy.makeFilter(args);
    if (filter instanceof QueryWrapperFilter) {
      return ((QueryWrapperFilter)filter).getQuery();
    } else {
      return new ConstantScoreQuery(filter);
    }
  }
}
项目:Maskana-Gestor-de-Conocimiento    文件:ChainedFilterTest.java   
public void testWithCachingFilter() throws Exception {
  Directory dir = newDirectory();
  RandomIndexWriter writer = new RandomIndexWriter(random(), dir);
  IndexReader reader = writer.getReader();
  writer.close();

  IndexSearcher searcher = newSearcher(reader);

  Query query = new TermQuery(new Term("none", "none"));

  QueryWrapperFilter queryFilter = new QueryWrapperFilter(query);
  CachingWrapperFilter cachingFilter = new CachingWrapperFilter(queryFilter);

  searcher.search(query, cachingFilter, 1);

  CachingWrapperFilter cachingFilter2 = new CachingWrapperFilter(queryFilter);
  Filter[] chain = new Filter[2];
  chain[0] = cachingFilter;
  chain[1] = cachingFilter2;
  ChainedFilter cf = new ChainedFilter(chain);

  // throws java.lang.ClassCastException: org.apache.lucene.util.OpenBitSet cannot be cast to java.util.BitSet
  searcher.search(new MatchAllDocsQuery(), cf, 1);
  reader.close();
  dir.close();
}
项目:Maskana-Gestor-de-Conocimiento    文件:TestExpressionSorts.java   
public void testQueries() throws Exception {
  int n = atLeast(4);
  for (int i = 0; i < n; i++) {
    Filter odd = new QueryWrapperFilter(new TermQuery(new Term("oddeven", "odd")));
    assertQuery(new MatchAllDocsQuery(), null);
    assertQuery(new TermQuery(new Term("english", "one")), null);
    assertQuery(new MatchAllDocsQuery(), odd);
    assertQuery(new TermQuery(new Term("english", "four")), odd);
    BooleanQuery bq = new BooleanQuery();
    bq.add(new TermQuery(new Term("english", "one")), BooleanClause.Occur.SHOULD);
    bq.add(new TermQuery(new Term("oddeven", "even")), BooleanClause.Occur.SHOULD);
    assertQuery(bq, null);
    // force in order
    bq.add(new TermQuery(new Term("english", "two")), BooleanClause.Occur.SHOULD);
    bq.setMinimumNumberShouldMatch(2);
    assertQuery(bq, null);
  }
}
项目:t4f-data    文件:SecurityFilterTest.java   
public void testSecurityFilter() throws Exception {
  TermQuery query = new TermQuery(                   //#1
                      new Term("keywords", "info")); //#1

  assertEquals("Both documents match",               //#2
               2,                                    //#2
               TestUtil.hitCount(searcher, query));  //#2

  Filter jakeFilter = new QueryWrapperFilter(        //#3
    new TermQuery(new Term("owner", "jake")));       //#3

  TopDocs hits = searcher.search(query, jakeFilter, 10);
  assertEquals(1, hits.totalHits);                   //#4
  assertEquals("elwood is safe",                     //#4
               "jake's sensitive info",              //#4
      searcher.doc(hits.scoreDocs[0].doc)            //#4
               .get("keywords"));                    //#4
}
项目:lams    文件:BufferedUpdatesStream.java   
private static long applyQueryDeletes(Iterable<QueryAndLimit> queriesIter, ReadersAndUpdates rld, final SegmentReader reader) throws IOException {
  long delCount = 0;
  final AtomicReaderContext readerContext = reader.getContext();
  boolean any = false;
  for (QueryAndLimit ent : queriesIter) {
    Query query = ent.query;
    int limit = ent.limit;
    final DocIdSet docs = new QueryWrapperFilter(query).getDocIdSet(readerContext, reader.getLiveDocs());
    if (docs != null) {
      final DocIdSetIterator it = docs.iterator();
      if (it != null) {
        while(true)  {
          int doc = it.nextDoc();
          if (doc >= limit) {
            break;
          }

          if (!any) {
            rld.initWritableLiveDocs();
            any = true;
          }

          if (rld.delete(doc)) {
            delCount++;
          }
        }
      }
    }
  }

  return delCount;
}
项目:bisis-v4    文件:QueryUtils.java   
public static Filter getQueryFilter(String query){
    try{
        WhitespaceAnalyzer sa= new WhitespaceAnalyzer();
        QueryParser p = new QueryParser("contents",sa);
        Query q = p.parse(query);
        Filter filter = new QueryWrapperFilter(q);
        return filter;
    }catch (Exception e){
        return null;
    }
}
项目:OpenCyclos    文件:Filters.java   
/**
 * Returns a filter that applies a query to an specific field
 */
public static Filter fieldQuery(final Analyzer analyzer, final String field, final String query) {
    if (StringUtils.isEmpty(query)) {
        return null;
    }
    QueryParser parser = new QueryParser(LuceneUtils.LUCENE_VERSION, field, analyzer);
    try {
        Query q = parser.parse(query);
        return new QueryWrapperFilter(q);
    } catch (ParseException e) {
        throw new QueryParseException();
    }
}
项目:meltwater-elasticsearch-queries    文件:LimitingFilterFactory.java   
private Query spanFilter(SpanQuery query) {
    if (query instanceof SpanNearQuery) {
        return spanNearFilter((SpanNearQuery) query);
    } else if (query instanceof SpanNotQuery) {
        return spanNotFilter((SpanNotQuery) query);
    } else if (query instanceof SpanOrQuery) {
        return spanOrFilter((SpanOrQuery) query);
    } else if (query instanceof SpanTermQuery) {
        return new TermQuery(((SpanTermQuery) query).getTerm());
    } else if (query instanceof SpanMultiTermQueryWrapper) {
        return ((SpanMultiTermQueryWrapper) query).getWrappedQuery();
    } else {
        return new QueryWrapperFilter(query);
    }
}
项目:search    文件:PointVectorStrategy.java   
@Override
public Filter makeFilter(SpatialArgs args) {
  //unwrap the CSQ from makeQuery
  ConstantScoreQuery csq = makeQuery(args);
  Filter filter = csq.getFilter();
  if (filter != null)
    return filter;
  else
    return new QueryWrapperFilter(csq.getQuery());
}
项目:search    文件:TestBlockJoinValidation.java   
@Before
public void before() throws Exception {
  directory = newDirectory();
  final IndexWriterConfig config = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
  final IndexWriter indexWriter = new IndexWriter(directory, config);
  for (int i = 0; i < AMOUNT_OF_SEGMENTS; i++) {
    List<Document> segmentDocs = createDocsForSegment(i);
    indexWriter.addDocuments(segmentDocs);
    indexWriter.commit();
  }
  indexReader = DirectoryReader.open(indexWriter, random().nextBoolean());
  indexWriter.close();
  indexSearcher = new IndexSearcher(indexReader);
  parentsFilter = new FixedBitSetCachingWrapperFilter(new QueryWrapperFilter(new WildcardQuery(new Term("parent", "*"))));
}
项目:search    文件:BufferedUpdatesStream.java   
private static long applyQueryDeletes(Iterable<QueryAndLimit> queriesIter, ReadersAndUpdates rld, final SegmentReader reader) throws IOException {
  long delCount = 0;
  final AtomicReaderContext readerContext = reader.getContext();
  boolean any = false;
  for (QueryAndLimit ent : queriesIter) {
    Query query = ent.query;
    int limit = ent.limit;
    final DocIdSet docs = new QueryWrapperFilter(query).getDocIdSet(readerContext, reader.getLiveDocs());
    if (docs != null) {
      final DocIdSetIterator it = docs.iterator();
      if (it != null) {
        while(true)  {
          int doc = it.nextDoc();
          if (doc >= limit) {
            break;
          }

          if (!any) {
            rld.initWritableLiveDocs();
            any = true;
          }

          if (rld.delete(doc)) {
            delCount++;
          }
        }
      }
    }
  }

  return delCount;
}
项目:search    文件:TermsQParserPlugin.java   
@Override
Filter makeFilter(String fname, BytesRef[] byteRefs) {
  BooleanQuery bq = new BooleanQuery(true);
  for (BytesRef byteRef : byteRefs) {
    bq.add(new TermQuery(new Term(fname, byteRef)), BooleanClause.Occur.SHOULD);
  }
  return new QueryWrapperFilter(bq);
}
项目:irplus    文件:DefaultInstitutionalItemSearchService.java   
/**
 * Determines the number of hits for each facet across the main query.
 * 
 * @param facets
 * @param reader
 * @param mainQueryBits
 * @throws ParseException
 * @throws IOException
 */
private void processFacetCategory(Collection<FacetResult> facets, 
        IndexReader reader, 
        OpenBitSetDISI mainQueryBitSet,
        IndexSearcher searcher) 
   throws ParseException, IOException
{
    for(FacetResult f : facets )
    {
        long count = 0;

        String searchString = f.getFacetName();

        if( !searchString.trim().equals(""))
        {
            QueryParser subQueryParser = new QueryParser(Version.LUCENE_35, f.getField(), keywordAnalyzer);
            searchString = "\"" + searchString +"\"";
            Query subQuery = subQueryParser.parse(searchString);

            QueryWrapperFilter subQueryWrapper = new QueryWrapperFilter(subQuery);

            log.debug("Fixed query in process facet catagory 2 = " + subQuery + " subQueryWrapper = " + subQueryWrapper);

            DocIdSet subQueryBits = subQueryWrapper.getDocIdSet(reader);

            OpenBitSetDISI subQuerybitSet = new OpenBitSetDISI(subQueryBits.iterator(), reader.maxDoc());

            count = getFacetHitCount(mainQueryBitSet, subQuerybitSet);

            log.debug("count = " + count);
        }
        else
        {
            log.error("bad search string " + searchString);
        }
        f.setHits(count);
    }
}
项目:irplus    文件:DefaultInstitutionalItemSearchService.java   
/**
 * Execute the sub query facets and return the search results
 * @throws ParseException 
 * @throws IOException 
 */
private List<Filter> getSubQueryFilters( List<FacetFilter> filters, 
        IndexSearcher searcher) throws ParseException, IOException
{
    List<Filter> luceneFilters = new LinkedList<Filter>();

    for(FacetFilter filter : filters)
    {   

        if(log.isDebugEnabled())
        {
            log.debug("adding filter for field " + filter.getField() + " and query " + filter.getQuery());
        }

        String fixedQuery = filter.getQuery();
        QueryParser subQueryParser = new QueryParser(Version.LUCENE_35, filter.getField(), keywordAnalyzer);
        fixedQuery = "\"" + fixedQuery +"\"";
        Query subQuery = subQueryParser.parse(fixedQuery);

        if(log.isDebugEnabled())
        {
            log.debug("fixed query in get sub query filters 1 is " + subQuery);
        }
        luceneFilters.add(new QueryWrapperFilter(subQuery));
    }

    return luceneFilters;
}
项目:irplus    文件:DefaultResearcherSearchService.java   
/**
 * Determines the number of hits for each facet across the main query.
 * 
 * @param facets
 * @param reader
 * @param mainQueryBits
 * @throws ParseException
 * @throws IOException
 */
private void processFacetCategory(Collection<FacetResult> facets, 
        IndexReader reader, 
        DocIdSet mainQueryBits) 
   throws ParseException, IOException
{
    for(FacetResult f : facets )
    {
        QueryParser subQueryParser = new QueryParser(Version.LUCENE_35, f.getField(), analyzer);
        subQueryParser.setDefaultOperator(QueryParser.AND_OPERATOR);
        String fixedQuery = SearchHelper.prepareFacetSearchString(f.getFacetName(), false);
        fixedQuery = "\"" + fixedQuery + "\"";
        Query subQuery = subQueryParser.parse(fixedQuery);

        if(log.isDebugEnabled())
        {
            log.debug("Fiexed query in process Facet Category = " + fixedQuery);
        }

        QueryWrapperFilter subQueryWrapper = new QueryWrapperFilter(subQuery);
        DocIdSet subQueryBits = subQueryWrapper.getDocIdSet(reader);

        OpenBitSetDISI mainQuerybitSet = new OpenBitSetDISI(mainQueryBits.iterator(), maxNumberOfMainQueryHits);
        OpenBitSetDISI subQuerybitSet = new OpenBitSetDISI(subQueryBits.iterator(), maxNumberOfMainQueryHits);

        long count = getFacetHitCount(mainQuerybitSet, subQuerybitSet);
        f.setHits(count);
    }
}
项目:NYBC    文件:PointVectorStrategy.java   
@Override
public Filter makeFilter(SpatialArgs args) {
  //unwrap the CSQ from makeQuery
  ConstantScoreQuery csq = makeQuery(args);
  Filter filter = csq.getFilter();
  if (filter != null)
    return filter;
  else
    return new QueryWrapperFilter(csq.getQuery());
}
项目:NYBC    文件:BufferedDeletesStream.java   
private static long applyQueryDeletes(Iterable<QueryAndLimit> queriesIter, ReadersAndLiveDocs rld, final SegmentReader reader) throws IOException {
  long delCount = 0;
  final AtomicReaderContext readerContext = reader.getContext();
  boolean any = false;
  for (QueryAndLimit ent : queriesIter) {
    Query query = ent.query;
    int limit = ent.limit;
    final DocIdSet docs = new QueryWrapperFilter(query).getDocIdSet(readerContext, reader.getLiveDocs());
    if (docs != null) {
      final DocIdSetIterator it = docs.iterator();
      if (it != null) {
        while(true)  {
          int doc = it.nextDoc();
          if (doc >= limit) {
            break;
          }

          if (!any) {
            rld.initWritableLiveDocs();
            any = true;
          }

          if (rld.delete(doc)) {
            delCount++;
          }
        }
      }
    }
  }

  return delCount;
}
项目:incubator-blur    文件:AliasBlurFilterCache.java   
@Override
public Filter storePreFilter(String table, String filterStr, Filter filter, FilterParser filterParser)
    throws ParseException {
  if (filter instanceof QueryWrapperFilter) {
    QueryWrapperFilter queryWrapperFilter = (QueryWrapperFilter) filter;
    Query query = queryWrapperFilter.getQuery();
    Filter newFilter = buildNewFilter(query, _tableAliasFilterMap.get(table), filterParser);
    FilterKey key = new FilterKey(table, filterStr);
    _preFilterCacheMap.put(key, newFilter);
    return newFilter;
  }
  return filter;
}
项目:incubator-blur    文件:IndexManagerTest.java   
@Test
public void testFetchRowByRowIdWithFilterNoRow() throws Exception {
  IndexManagerTestReadInterceptor.interceptor = new ReadInterceptor(null) {
    @Override
    public Filter getFilter() {
      return new QueryWrapperFilter(new TermQuery(new Term(FAMILY + ".testcol12", "NOROW-1")));
    }
  };
  Selector selector = new Selector().setRowId("row-6");
  FetchResult fetchResult = new FetchResult();
  indexManager.fetchRow(TABLE, selector, fetchResult);
  assertTrue(fetchResult.exists);
  assertFalse(fetchResult.deleted);
  assertNull(fetchResult.rowResult.row.records);
}
项目:incubator-blur    文件:IndexManagerTest.java   
@Test
public void testQuerySuperQueryTrueWithFilter() throws Exception {
  IndexManagerTestReadInterceptor.interceptor = new ReadInterceptor(null) {
    @Override
    public Filter getFilter() {
      return new QueryWrapperFilter(new TermQuery(new Term(FAMILY + ".testcol2", "value2")));
    }
  };
  BlurQuery blurQuery = new BlurQuery();
  blurQuery.query = new Query();
  blurQuery.query.query = "test-family.testcol1:value1";
  blurQuery.query.rowQuery = true;
  blurQuery.query.scoreType = ScoreType.SUPER;
  blurQuery.fetch = 10;
  blurQuery.minimumNumberOfResults = Long.MAX_VALUE;
  blurQuery.maxQueryTime = Long.MAX_VALUE;
  blurQuery.uuid = "1";

  BlurResultIterable iterable = indexManager.query(TABLE, blurQuery, null);
  assertEquals(1, iterable.getTotalResults());
  BlurIterator<BlurResult, BlurException> iterator = iterable.iterator();
  while (iterator.hasNext()) {
    BlurResult result = iterator.next();
    Selector selector = new Selector().setLocationId(result.getLocationId());
    FetchResult fetchResult = new FetchResult();
    indexManager.fetchRow(TABLE, selector, fetchResult);
    assertNotNull(fetchResult.rowResult);
    assertNull(fetchResult.recordResult);
  }

  assertFalse(indexManager.currentQueries(TABLE).isEmpty());
  Thread.sleep(2000);// wait for cleanup to fire
  assertTrue(indexManager.currentQueries(TABLE).isEmpty());
}
项目:incubator-blur    文件:FilterCacheTest.java   
@Test
public void test1() throws IOException {
  Filter filter = new QueryWrapperFilter(new TermQuery(new Term("f1", "t1")));
  FilterCache filterCache = new FilterCache("filter1", filter);
  RAMDirectory directory = new RAMDirectory();
  writeDocs(filterCache, directory);

  DirectoryReader reader = DirectoryReader.open(directory);

  IndexSearcher searcher = new IndexSearcher(reader);

  Query query = new TermQuery(new Term("f2", "t2"));
  TopDocs topDocs1 = searcher.search(query, filterCache, 10);
  assertEquals(1, filterCache.getMisses());
  assertEquals(0, filterCache.getHits());
  assertEquals(1, topDocs1.totalHits);

  TopDocs topDocs2 = searcher.search(query, filterCache, 10);
  assertEquals(1, filterCache.getMisses());
  assertEquals(1, filterCache.getHits());
  assertEquals(1, topDocs2.totalHits);

  TopDocs topDocs3 = searcher.search(query, filterCache, 10);
  assertEquals(1, filterCache.getMisses());
  assertEquals(2, filterCache.getHits());
  assertEquals(1, topDocs3.totalHits);
}
项目:BioSolr    文件:XJoinQParserPlugin.java   
@Override
Filter makeFilter(String fname, Iterator<BytesRef> it) {
  BooleanQuery bq = new BooleanQuery(true);
  while (it.hasNext()) {
    bq.add(new TermQuery(new Term(fname, it.next())), BooleanClause.Occur.SHOULD);
  }
  return new QueryWrapperFilter(bq);
}
项目:maven-framework-project    文件:DeviceFilterFactory.java   
/**
 * When a @FullTextFilterDef annotation associates this factory class with a given name, and a "FullTextQuery.enableFullTextFilter()" is 
 * called with that name as its input parameter, then this method is used to return a Filter with the actual filtering logic.  It is 
 * the @Factory annotation that designates this method as having that responsibility for this factory class. 
 */
@Factory
public Filter getFilter() {
    StringTokenizer tokenzier = new StringTokenizer(deviceName.toLowerCase());
    PhraseQuery query = new PhraseQuery();
    while(tokenzier.hasMoreTokens()) {
        // By default, field values were converted to lower-case when indexed by Lucene.  So be sure to 
        // convert search terms to lower-case in order to make them match.
        Term term = new Term("supportedDevices.name", tokenzier.nextToken().toLowerCase());
        query.add(term);
    }
    Filter filter = new QueryWrapperFilter(query);
    return new CachingWrapperFilter(filter);
}
项目:maven-framework-project    文件:DeviceFilterFactory.java   
/**
 * When a @FullTextFilterDef annotation associates this factory class with a given name, and a "FullTextQuery.enableFullTextFilter()" is 
 * called with that name as its input parameter, then this method is used to return a Filter with the actual filtering logic.  It is 
 * the @Factory annotation that designates this method as having that responsibility for this factory class. 
 */
@Factory
public Filter getFilter() {
    StringTokenizer tokenzier = new StringTokenizer(deviceName.toLowerCase());
    PhraseQuery query = new PhraseQuery();
    while(tokenzier.hasMoreTokens()) {
        // By default, field values were converted to lower-case when indexed by Lucene.  So be sure to 
        // convert search terms to lower-case in order to make them match.
        Term term = new Term("supportedDevices.name", tokenzier.nextToken().toLowerCase());
        query.add(term);
    }
    Filter filter = new QueryWrapperFilter(query);
    return new CachingWrapperFilter(filter);
}
项目:maven-framework-project    文件:DeviceFilterFactory.java   
/**
 * When a @FullTextFilterDef annotation associates this factory class with a given name, and a "FullTextQuery.enableFullTextFilter()" is 
 * called with that name as its input parameter, then this method is used to return a Filter with the actual filtering logic.  It is 
 * the @Factory annotation that designates this method as having that responsibility for this factory class. 
 */
@Factory
public Filter getFilter() {
    StringTokenizer tokenzier = new StringTokenizer(deviceName.toLowerCase());
    PhraseQuery query = new PhraseQuery();
    while(tokenzier.hasMoreTokens()) {
        // By default, field values were converted to lower-case when indexed by Lucene.  So be sure to 
        // convert search terms to lower-case in order to make them match.
        Term term = new Term("supportedDevices.name", tokenzier.nextToken().toLowerCase());
        query.add(term);
    }
    Filter filter = new QueryWrapperFilter(query);
    return new CachingWrapperFilter(filter);
}
项目:read-open-source-code    文件:PointVectorStrategy.java   
@Override
public Filter makeFilter(SpatialArgs args) {
  //unwrap the CSQ from makeQuery
  ConstantScoreQuery csq = makeQuery(args);
  Filter filter = csq.getFilter();
  if (filter != null)
    return filter;
  else
    return new QueryWrapperFilter(csq.getQuery());
}
项目:read-open-source-code    文件:BufferedUpdatesStream.java   
private static long applyQueryDeletes(Iterable<QueryAndLimit> queriesIter, ReadersAndUpdates rld, final SegmentReader reader) throws IOException {
  long delCount = 0;
  final AtomicReaderContext readerContext = reader.getContext();
  boolean any = false;
  for (QueryAndLimit ent : queriesIter) {
    Query query = ent.query;
    int limit = ent.limit;
    final DocIdSet docs = new QueryWrapperFilter(query).getDocIdSet(readerContext, reader.getLiveDocs());
    if (docs != null) {
      final DocIdSetIterator it = docs.iterator();
      if (it != null) {
        while(true)  {
          int doc = it.nextDoc();
          if (doc >= limit) {
            break;
          }

          if (!any) {
            rld.initWritableLiveDocs();
            any = true;
          }

          if (rld.delete(doc)) {
            delCount++;
          }
        }
      }
    }
  }

  return delCount;
}