You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2009/11/02 13:43:52 UTC
svn commit: r831879 - in
/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene:
FieldNames.java JackrabbitIndexSearcher.java
Author: mreutegg
Date: Mon Nov 2 12:43:51 2009
New Revision: 831879
URL: http://svn.apache.org/viewvc?rev=831879&view=rev
Log:
JCR-2377: Avoid docFreq calls for non-fulltext queries
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FieldNames.java
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JackrabbitIndexSearcher.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FieldNames.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FieldNames.java?rev=831879&r1=831878&r2=831879&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FieldNames.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/FieldNames.java Mon Nov 2 12:43:51 2009
@@ -152,4 +152,18 @@
public static int getNameLength(String namedValue) {
return namedValue.indexOf('[') + 1;
}
+
+ /**
+ * Returns <code>true</code> if the given <code>fieldName</code> denotes a
+ * fulltext field like {@link #FULLTEXT} or a field with a
+ * {@link #FULLTEXT_PREFIX}.
+ *
+ * @param fieldName a field name.
+ * @return <code>true</code> if <code>fieldName</code> is a fulltext field;
+ * <code>false</code> otherwise.
+ */
+ public static boolean isFulltextField(String fieldName) {
+ return fieldName.equals(FULLTEXT)
+ || fieldName.indexOf(FULLTEXT_PREFIX) != -1;
+ }
}
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JackrabbitIndexSearcher.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JackrabbitIndexSearcher.java?rev=831879&r1=831878&r2=831879&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JackrabbitIndexSearcher.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/JackrabbitIndexSearcher.java Mon Nov 2 12:43:51 2009
@@ -16,16 +16,17 @@
*/
package org.apache.jackrabbit.core.query.lucene;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.Sort;
-import org.apache.lucene.index.IndexReader;
-import org.apache.jackrabbit.core.query.lucene.constraint.EvaluationContext;
+import java.io.IOException;
+
import org.apache.jackrabbit.core.SessionImpl;
+import org.apache.jackrabbit.core.query.lucene.constraint.EvaluationContext;
import org.apache.jackrabbit.core.state.ItemStateManager;
import org.apache.jackrabbit.spi.Name;
-
-import java.io.IOException;
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.Term;
+import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.search.Query;
+import org.apache.lucene.search.Sort;
/**
* <code>JackrabbitIndexSearcher</code> implements an index searcher with
@@ -112,6 +113,19 @@
return hits;
}
+ //---------------------------< IndexSearcher >------------------------------
+
+ @Override
+ public int docFreq(Term term) throws IOException {
+ // provide a fixed document frequency for fields that are not fulltext
+ // indexed. correct frequency is only useful for fulltext queries.
+ if (FieldNames.isFulltextField(term.field())) {
+ return super.docFreq(term);
+ } else {
+ return 1;
+ }
+ }
+
//------------------------< EvaluationContext >-----------------------------
/**