lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Scott Ganyo <scott.ga...@eTapestry.com>
Subject RE: cvs commit: jakarta-lucene/src/java/org/apache/lucene/search QueryFilter.java
Date Mon, 05 Aug 2002 18:12:54 GMT
I assume that this means that my suggestion (for making Hits work as a
Filter) was discarded.  Was there any particular reason why?  Just
curious...

Scott

> -----Original Message-----
> From: cutting@apache.org [mailto:cutting@apache.org]
> Sent: Monday, August 05, 2002 1:06 PM
> To: jakarta-lucene-cvs@apache.org
> Subject: cvs commit: jakarta-lucene/src/java/org/apache/lucene/search
> QueryFilter.java
> 
> 
> cutting     2002/08/05 11:05:56
> 
>   Modified:    .        CHANGES.txt
>   Added:       src/java/org/apache/lucene/search QueryFilter.java
>   Log:
>   Added QueryFilter class.
>   
>   Revision  Changes    Path
>   1.30      +13 -2     jakarta-lucene/CHANGES.txt
>   
>   Index: CHANGES.txt
>   ===================================================================
>   RCS file: /home/cvs/jakarta-lucene/CHANGES.txt,v
>   retrieving revision 1.29
>   retrieving revision 1.30
>   diff -u -r1.29 -r1.30
>   --- CHANGES.txt	5 Aug 2002 17:39:03 -0000	1.29
>   +++ CHANGES.txt	5 Aug 2002 18:05:56 -0000	1.30
>   @@ -71,7 +71,18 @@
>         have been removed.
>    
>         Finally, repeating a token with an increment of zero 
> can also be
>   -     used to boost scores of matches on that token.
>   +     used to boost scores of matches on that token.  (cutting)
>   +
>   + 14. Added new Filter class, QueryFilter.  This constrains search
>   +     results to only match those which also match a provided query.
>   +     Results are cached, so that searches after the first 
> on the same
>   +     index using this filter are very fast.
>   +
>   +     This could be used, for example, with a RangeQuery on 
> a formatted
>   +     date field to implement date filtering.  One could re-use a
>   +     single QueryFilter that matches, e.g., only documents modified
>   +     within the last week.  The QueryFilter and RangeQuery 
> would only
>   +     need to be reconstructed once per day. (cutting)
>    
>    
>    1.2 RC6
>   
>   
>   
>   1.1                  
> jakarta-lucene/src/java/org/apache/lucene/search/QueryFilter.java
>   
>   Index: QueryFilter.java
>   ===================================================================
>   package org.apache.lucene.search;
>   
>   /* 
> ====================================================================
>    * The Apache Software License, Version 1.1
>    *
>    * Copyright (c) 2001 The Apache Software Foundation.  All rights
>    * reserved.
>    *
>    * Redistribution and use in source and binary forms, with 
> or without
>    * modification, are permitted provided that the following 
> conditions
>    * are met:
>    *
>    * 1. Redistributions of source code must retain the above copyright
>    *    notice, this list of conditions and the following disclaimer.
>    *
>    * 2. Redistributions in binary form must reproduce the 
> above copyright
>    *    notice, this list of conditions and the following 
> disclaimer in
>    *    the documentation and/or other materials provided with the
>    *    distribution.
>    *
>    * 3. The end-user documentation included with the redistribution,
>    *    if any, must include the following acknowledgment:
>    *       "This product includes software developed by the
>    *        Apache Software Foundation (http://www.apache.org/)."
>    *    Alternately, this acknowledgment may appear in the 
> software itself,
>    *    if and wherever such third-party acknowledgments 
> normally appear.
>    *
>    * 4. The names "Apache" and "Apache Software Foundation" and
>    *    "Apache Lucene" must not be used to endorse or 
> promote products
>    *    derived from this software without prior written 
> permission. For
>    *    written permission, please contact apache@apache.org.
>    *
>    * 5. Products derived from this software may not be called 
> "Apache",
>    *    "Apache Lucene", nor may "Apache" appear in their 
> name, without
>    *    prior written permission of the Apache Software Foundation.
>    *
>    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
>    * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
>    * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
>    * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
>    * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>    * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>    * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
>    * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
> CAUSED AND
>    * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
> LIABILITY,
>    * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
> ANY WAY OUT
>    * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
> POSSIBILITY OF
>    * SUCH DAMAGE.
>    * 
> ====================================================================
>    *
>    * This software consists of voluntary contributions made by many
>    * individuals on behalf of the Apache Software Foundation. 
>  For more
>    * information on the Apache Software Foundation, please see
>    * <http://www.apache.org/>.
>    */
>   
>   import java.io.IOException;
>   import java.util.WeakHashMap;
>   import java.util.BitSet;
>   import org.apache.lucene.index.IndexReader;
>   
>   /** Constrains search results to only match those which 
> also match a provided
>    * query.  Results are cached, so that searches after the 
> first on the same
>    * index using this filter are much faster.
>    *
>    * <p> This could be used, for example, with a {@link 
> RangeQuery} on a suitably
>    * formatted date field to implement date filtering.  One 
> could re-use a single
>    * QueryFilter that matches, e.g., only documents modified 
> within the last
>    * week.  The QueryFilter and RangeQuery would only need to 
> be reconstructed
>    * once per day.
>    */
>   public class QueryFilter extends Filter {
>     private Query query;
>     private transient WeakHashMap cache = new WeakHashMap();
>   
>     /** Constructs a filter which only matches documents matching
>      * <code>query</code>.
>      */
>     public QueryFilter(Query query) {
>       this.query = query;
>     }
>   
>     public BitSet bits(IndexReader reader) throws IOException {
>   
>       synchronized (cache) {                        // check cache
>         BitSet cached = (BitSet)cache.get(reader);
>         if (cached != null)
>           return cached;
>       }
>   
>       final BitSet bits = new BitSet(reader.maxDoc());
>   
>       new IndexSearcher(reader).search(query, new HitCollector() {
>   	public final void collect(int doc, float score) {
>             bits.set(doc);                          // set bit for hit
>           }
>         });
>                                        
>   
>       synchronized (cache) {                        // update cache
>         cache.put(reader, bits);
>       }
>   
>       return bits;
>     }
>   }
>   
>   
>   
> 
> --
> To unsubscribe, e-mail:   
> <mailto:lucene-dev-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: 
> <mailto:lucene-dev-help@jakarta.apache.org>
> 

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message