Author: nzamosenchuk
Date: 2011-02-02 08:49:51 -0500 (Wed, 02 Feb 2011)
New Revision: 3913
Added:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/hits/AbstractHitCollector.java
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/ChildAxisQuery.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DerefQuery.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DescendantSelfAxisQuery.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MatchAllScorer.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/ParentAxisQuery.java
Log:
EXOJCR-1157 : Getting rid of HitCollector in favor of Collector class.
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/ChildAxisQuery.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/ChildAxisQuery.java 2011-02-02
12:57:34 UTC (rev 3912)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/ChildAxisQuery.java 2011-02-02
13:49:51 UTC (rev 3913)
@@ -33,6 +33,7 @@
import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
import org.exoplatform.services.jcr.impl.core.query.LocationStepQueryNode;
+import org.exoplatform.services.jcr.impl.core.query.lucene.hits.AbstractHitCollector;
import org.exoplatform.services.jcr.impl.core.query.lucene.hits.AdaptingHits;
import org.exoplatform.services.jcr.impl.core.query.lucene.hits.Hits;
import org.exoplatform.services.jcr.impl.core.query.lucene.hits.ScorerHits;
@@ -489,7 +490,7 @@
{
// always use simple in that case
calc[0] = new SimpleChildrenCalculator(reader, hResolver);
- contextScorer.score(new HitCollector()
+ contextScorer.score(new AbstractHitCollector()
{
@Override
public void collect(int doc, float score)
@@ -502,7 +503,7 @@
{
// start simple but switch once threshold is reached
calc[0] = new SimpleChildrenCalculator(reader, hResolver);
- contextScorer.score(new HitCollector()
+ contextScorer.score(new AbstractHitCollector()
{
private List docIds = new ArrayList();
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DerefQuery.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DerefQuery.java 2011-02-02
12:57:34 UTC (rev 3912)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DerefQuery.java 2011-02-02
13:49:51 UTC (rev 3913)
@@ -27,6 +27,7 @@
import org.apache.lucene.search.Similarity;
import org.apache.lucene.search.Weight;
import org.exoplatform.services.jcr.datamodel.InternalQName;
+import org.exoplatform.services.jcr.impl.core.query.lucene.hits.AbstractHitCollector;
import java.io.IOException;
import java.util.ArrayList;
@@ -338,7 +339,7 @@
if (uuids == null)
{
uuids = new ArrayList();
- contextScorer.score(new HitCollector()
+ contextScorer.score(new AbstractHitCollector()
{
@Override
public void collect(int doc, float score)
@@ -351,7 +352,7 @@
final BitSet nameTestHits = new BitSet();
if (nameTestScorer != null)
{
- nameTestScorer.score(new HitCollector()
+ nameTestScorer.score(new AbstractHitCollector()
{
@Override
public void collect(int doc, float score)
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DescendantSelfAxisQuery.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DescendantSelfAxisQuery.java 2011-02-02
12:57:34 UTC (rev 3912)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/DescendantSelfAxisQuery.java 2011-02-02
13:49:51 UTC (rev 3913)
@@ -18,7 +18,6 @@
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.Explanation;
-import org.apache.lucene.search.HitCollector;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.Searcher;
@@ -27,6 +26,7 @@
import org.apache.lucene.search.Weight;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
+import org.exoplatform.services.jcr.impl.core.query.lucene.hits.AbstractHitCollector;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -588,7 +588,7 @@
if (!contextHitsCalculated)
{
long time = System.currentTimeMillis();
- contextScorer.score(new HitCollector()
+ contextScorer.score(new AbstractHitCollector()
{
@Override
public void collect(int doc, float score)
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MatchAllScorer.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MatchAllScorer.java 2011-02-02
12:57:34 UTC (rev 3912)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MatchAllScorer.java 2011-02-02
13:49:51 UTC (rev 3913)
@@ -16,20 +16,20 @@
*/
package org.exoplatform.services.jcr.impl.core.query.lucene;
-import java.io.IOException;
-import java.util.BitSet;
-import java.util.HashMap;
-import java.util.Map;
-
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermDocs;
import org.apache.lucene.index.TermEnum;
+import org.apache.lucene.search.Collector;
import org.apache.lucene.search.Explanation;
-import org.apache.lucene.search.HitCollector;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.Similarity;
+import java.io.IOException;
+import java.util.BitSet;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* The MatchAllScorer implements a Scorer that scores / collects all
* documents in the index that match a field.
@@ -84,9 +84,9 @@
/**
* {@inheritDoc}
*/
- public void score(HitCollector hc) throws IOException {
+ public void score(Collector hc) throws IOException {
while (next()) {
- hc.collect(doc(), score());
+ hc.collect(doc());
}
}
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/ParentAxisQuery.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/ParentAxisQuery.java 2011-02-02
12:57:34 UTC (rev 3912)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/ParentAxisQuery.java 2011-02-02
13:49:51 UTC (rev 3913)
@@ -18,13 +18,13 @@
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.Explanation;
-import org.apache.lucene.search.HitCollector;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.Similarity;
import org.apache.lucene.search.Weight;
import org.exoplatform.services.jcr.datamodel.InternalQName;
+import org.exoplatform.services.jcr.impl.core.query.lucene.hits.AbstractHitCollector;
import org.exoplatform.services.jcr.impl.core.query.lucene.hits.Hits;
import org.exoplatform.services.jcr.impl.core.query.lucene.hits.ScorerHits;
@@ -350,7 +350,7 @@
hits = new BitSet(reader.maxDoc());
final IOException[] ex = new IOException[1];
- contextScorer.score(new HitCollector()
+ contextScorer.score(new AbstractHitCollector()
{
private int[] docs = new int[1];
Added:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/hits/AbstractHitCollector.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/hits/AbstractHitCollector.java
(rev 0)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/hits/AbstractHitCollector.java 2011-02-02
13:49:51 UTC (rev 3913)
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *
http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.exoplatform.services.jcr.impl.core.query.lucene.hits;
+
+import java.io.IOException;
+
+import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.search.Collector;
+import org.apache.lucene.search.Scorer;
+
+/**
+ * Collector implementation which simply provides the collection
+ * of re-based doc base with scorer.
+ */
+public abstract class AbstractHitCollector extends Collector {
+ protected int base = 0;
+ protected Scorer scorer = null;
+
+ @Override
+ public void setNextReader(IndexReader reader, int docBase) throws IOException {
+ base = docBase;
+ }
+
+ @Override
+ public void setScorer(Scorer scorer) throws IOException {
+ this.scorer = scorer;
+ }
+
+ @Override
+ public void collect(int doc) throws IOException {
+ collect(base + doc, scorer.score());
+ }
+
+ /**
+ * Called once for every document matching a query, with the re-based document
+ * number and its computed score.
+ * @param doc the re-based document number.
+ * @param doc the document's score.
+ */
+ protected abstract void collect(int doc, float score);
+
+ @Override
+ public boolean acceptsDocsOutOfOrder() {
+ return false;
+ }
+}
\ No newline at end of file