Java Mailing List Archive

http://www.gg3721.com/

Home » Hibernate Commits List »

[hibernate-commits] Hibernate SVN: r14946 - in search/trunk:
 src/java/org/hibernate/search and 5 other directories.

hibernate-commits

2008-07-17


Author LoginPost Reply
Author: hardy.ferentschik
Date: 2008-07-17 05:44:30 -0400 (Thu, 17 Jul 2008)
New Revision: 14946

Modified:
 search/trunk/doc/reference/en/modules/query.xml
 search/trunk/src/java/org/hibernate/search/Environment.java
 search/trunk/src/java/org/hibernate/search/annotations/CacheBitResults.java
 search/trunk/src/java/org/hibernate/search/annotations/FullTextFilterDef.java
 search/trunk/src/java/org/hibernate/search/engine/SearchFactoryImplementor.java
 search/trunk/src/java/org/hibernate/search/impl/SearchFactoryImpl.java
 search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java
 search/trunk/src/test/org/hibernate/search/test/filter/FilterTest.java
Log:
HSEARCH-174:
* Some name refactoring. Getting rid of as many references to CachingWrapperFilter as possible.
* Updated and improved the documentation.

Modified: search/trunk/doc/reference/en/modules/query.xml
===================================================================
--- search/trunk/doc/reference/en/modules/query.xml  2008-07-17 04:30:45 UTC (rev 14945)
+++ search/trunk/doc/reference/en/modules/query.xml  2008-07-17 09:44:30 UTC (rev 14946)
@@(protected) @@
  implementation to each of the parameters equals and hashcode
  methods.</para>

-   <para>The filter cache is enabled by default and uses the notion of
-   SoftReferences to dispose memory when needed. To adjust the size of the
-   hard reference cache, use
+   <para>The filter cache is enabled by default and uses a combination of
+   hard and soft references to allow disposal of memory when needed. The hard
+   reference cache keeps track of the most recently used filters and
+   transforms the ones least used to <classname>SoftReferences</classname>
+   when needed. Once the limit of the hard reference cache is reached
+   addtional filters are cached as <classname>SoftReferences</classname>. To
+   adjust the size of the hard reference cache, use
  <literal>hibernate.search.filter.cache_strategy.size</literal> (defaults
  to 128). For advance use of filter caching, you can implement your own
  <classname>FilterCachingStrategy</classname>. The classname is defined by
  <literal>hibernate.search.filter.cache_strategy</literal>.</para>

-   <para>The described filter cache should not be confused with caching the
-   actual filter results. In Lucene it is common practise to wrap filters
-   using the <classname>IndexReader</classname> around a
+   <para>The described filter cache mechanism should not be confused with
+   caching the actual filter results. In Lucene it is common practise to wrap
+   filters using the <classname>IndexReader</classname> around a
  <classname>CachingWrapperFilter.</classname> The wrapper will cache the
  <classname>BitSet</classname> returned from the
  <methodname>bits(IndexReader reader)</methodname>method to avoid expensive
@@(protected) @@
  CachingWrapperFilter
  (<classname>org.hibernate.search.filter.CachingWrapperFilter</classname>).
  In contrast to Lucene's version of this class SoftReferences are used
-   together with a hard reference count. The hard reference count can be
-   adjusted using
-   <literal>hibernate.search.filter.caching_wrapper.size</literal> (defaults
-   to 5). The wrapping behaviour can be controlled by
-   <literal>@(protected)
-   three differerent values for this parameter:</para>
+   together with a hard reference count (see dicussion about filter cache).
+   The hard reference count can be adjusted using
+   <literal>hibernate.search.filter.cache_bit_results.size</literal>
+   (defaults to 5). The wrapping behaviour can be controlled by
+   <literal>@(protected)
+   differerent values for this parameter:</para>

  <para><informaltable align="left" width="">
     <tgroup cols="2">

Modified: search/trunk/src/java/org/hibernate/search/Environment.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/Environment.java  2008-07-17 04:30:45 UTC (rev 14945)
+++ search/trunk/src/java/org/hibernate/search/Environment.java  2008-07-17 09:44:30 UTC (rev 14946)
@@(protected) @@
-//$Id$
+// $Id$
package org.hibernate.search;

/**
@@(protected) @@
 /**
  * Property name for the hard ref count of our <code>CachingWrapperFilter</code>.
  */
-  public static final String CACHING_WRAPPER_FILTER_SIZE = "hibernate.search.filter.caching_wrapper.size";  
+  public static final String CACHE_BIT_RESULT_SIZE = "hibernate.search.filter.cache_bit_results.size";  
}

Modified: search/trunk/src/java/org/hibernate/search/annotations/CacheBitResults.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/annotations/CacheBitResults.java  2008-07-17 04:30:45 UTC (rev 14945)
+++ search/trunk/src/java/org/hibernate/search/annotations/CacheBitResults.java  2008-07-17 09:44:30 UTC (rev 14946)
@@(protected) @@
-// $Id:$
+// $Id$
package org.hibernate.search.annotations;

/**
- * Defines the strategy for using <code>CachingWrappingFilter</code>
+ * Defines the strategy for caching the <code>BitSet</code> returned by a defined filter.
*
* @author Hardy Ferentschik
* @see org.hibernate.search.filter.CachingWrapperFilter
*/
public enum CacheBitResults {
 /**
-   * Use a <code>CachingWrapperFilter<code> depending on the value of the <code>cache</code>
+   * Caching is dependent on the value of the <code>cache</code>
  * parameter of the filter definition. If <code>cache == true</code> a wrapping filter will
  * be used, otherwise not.
  * @see FullTextFilterDef#cache()
@@(protected) @@
 AUTOMATIC,
 
 /**
-   * Wrap the filter around a <code>CachingWrappingFilter</code>.
+   * The filters <code>BitSet</code> will be cached.
  */
 YES,
 
 /**
-   * Do not use a <code>CachingWrappingFilter</code>.
+   * No caching of the filter's <code>BitSet</code>.
  */
 NO;
}
\ No newline at end of file

Modified: search/trunk/src/java/org/hibernate/search/annotations/FullTextFilterDef.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/annotations/FullTextFilterDef.java  2008-07-17 04:30:45 UTC (rev 14945)
+++ search/trunk/src/java/org/hibernate/search/annotations/FullTextFilterDef.java  2008-07-17 09:44:30 UTC (rev 14946)
@@(protected) @@
 boolean cache() default true;
 
 /**
-   * Determines whether the filter should be wrapped around a <code>CachingWrapperFilter</code>.
+   * Determines whether the <code>BitSet</code> returned from the filter should be
+   * cached or not. Default is <code>CacheBitResults.AUTOMATIC</code>.
  */  
-  CacheBitResults useCachingWrapperFilter() default CacheBitResults.AUTOMATIC;
+  CacheBitResults cacheBitResult() default CacheBitResults.AUTOMATIC;
}

Modified: search/trunk/src/java/org/hibernate/search/engine/SearchFactoryImplementor.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/engine/SearchFactoryImplementor.java  2008-07-17 04:30:45 UTC (rev 14945)
+++ search/trunk/src/java/org/hibernate/search/engine/SearchFactoryImplementor.java  2008-07-17 09:44:30 UTC (rev 14946)
@@(protected) @@

 void addDirectoryProvider(DirectoryProvider<?> provider);
 
-  int getCachingWrapperFilterSize();  
+  int getFilterCacheBitResultsSize();  
}

Modified: search/trunk/src/java/org/hibernate/search/impl/SearchFactoryImpl.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/impl/SearchFactoryImpl.java  2008-07-17 04:30:45 UTC (rev 14945)
+++ search/trunk/src/java/org/hibernate/search/impl/SearchFactoryImpl.java  2008-07-17 09:44:30 UTC (rev 14946)
@@(protected) @@
import org.hibernate.annotations.common.reflection.XClass;
import org.hibernate.annotations.common.reflection.java.JavaReflectionManager;
import org.hibernate.annotations.common.util.StringHelper;
-import org.hibernate.mapping.PersistentClass;
import org.hibernate.search.Environment;
import org.hibernate.search.SearchException;
import org.hibernate.search.Version;
@@(protected) @@
 private final FilterCachingStrategy filterCachingStrategy;
 private Map<String, Analyzer> analyzers;
 private final AtomicBoolean stopped = new AtomicBoolean( false );
-  private final int cachingWrapperFilterSize;
+  private final int cacheBitResultsSize;
 /*
  * used as a barrier (piggyback usage) between initialization and subsequent usage of searchFactory in different threads
  * this is due to our use of the initialize pattern is a few areas
@@(protected) @@
   this.worker = WorkerFactory.createWorker( cfg, this );
   this.readerProvider = ReaderProviderFactory.createReaderProvider( cfg, this );
   this.filterCachingStrategy = buildFilterCachingStrategy( cfg.getProperties() );
-    this.cachingWrapperFilterSize = ConfigurationParseHelper.getIntValue( cfg.getProperties(), Environment.CACHING_WRAPPER_FILTER_SIZE, CachingWrapperFilter.DEFAULT_SIZE );
+    this.cacheBitResultsSize = ConfigurationParseHelper.getIntValue( cfg.getProperties(), Environment.CACHE_BIT_RESULT_SIZE, CachingWrapperFilter.DEFAULT_SIZE );
   this.barrier = 1; //write barrier
 }

@@(protected) @@
   FilterDef filterDef = new FilterDef();
   filterDef.setImpl( defAnn.impl() );
   filterDef.setCache( defAnn.cache() );
-    filterDef.setUseCachingWrapperFilter( defAnn.useCachingWrapperFilter() );
+    filterDef.setUseCachingWrapperFilter( defAnn.cacheBitResult() );
   try {
     filterDef.getImpl().newInstance();
   }
@@(protected) @@
   this.dirProviderData.put( provider, new DirectoryProviderData() );
 }

-  public int getCachingWrapperFilterSize() {
+  public int getFilterCacheBitResultsSize() {
   if (barrier != 0) {} //read barrier
-    return cachingWrapperFilterSize;
+    return cacheBitResultsSize;
 }
-  
}

Modified: search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java
===================================================================
--- search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java  2008-07-17 04:30:45 UTC (rev 14945)
+++ search/trunk/src/java/org/hibernate/search/query/FullTextQueryImpl.java  2008-07-17 09:44:30 UTC (rev 14946)
@@(protected) @@
   if (def.getUseCachingWrapperFilter() == CacheBitResults.YES
       || (def.getUseCachingWrapperFilter() == CacheBitResults.AUTOMATIC && def
           .isCache())) {
-      int cachingWrapperFilterSize = getSearchFactoryImplementor().getCachingWrapperFilterSize();
+      int cachingWrapperFilterSize = getSearchFactoryImplementor().getFilterCacheBitResultsSize();
     filter = new org.hibernate.search.filter.CachingWrapperFilter(filter, cachingWrapperFilterSize);
   }
   

Modified: search/trunk/src/test/org/hibernate/search/test/filter/FilterTest.java
===================================================================
--- search/trunk/src/test/org/hibernate/search/test/filter/FilterTest.java  2008-07-17 04:30:45 UTC (rev 14945)
+++ search/trunk/src/test/org/hibernate/search/test/filter/FilterTest.java  2008-07-17 09:44:30 UTC (rev 14946)
@@(protected) @@

import java.util.Calendar;

-import org.apache.lucene.analysis.StopAnalyzer;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
@@(protected) @@
import org.apache.lucene.search.RangeFilter;
import org.apache.lucene.search.TermQuery;
import org.hibernate.Session;
-import org.hibernate.search.Environment;
import org.hibernate.search.FullTextQuery;
import org.hibernate.search.FullTextSession;
import org.hibernate.search.Search;
-import org.hibernate.search.store.RAMDirectoryProvider;
import org.hibernate.search.test.SearchTestCase;

/**
@@(protected) @@
 
 protected void configure(org.hibernate.cfg.Configuration cfg) {
   super.configure(cfg);
-    cfg.setProperty( "hibernate.search.filter.caching_wrapper.size", "10" );
+    cfg.setProperty( "hibernate.search.filter.cache_bit_results.size", "10" );
 }  
}

_______________________________________________
hibernate-commits mailing list
hibernate-commits@(protected)
https://lists.jboss.org/mailman/listinfo/hibernate-commits
©2008 gg3721.com - Jax Systems, LLC, U.S.A.