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 2008/09/11 12:30:44 UTC
svn commit: r694208 - in /jackrabbit/branches/1.4/jackrabbit-core: ./
src/main/java/org/apache/jackrabbit/core/query/lucene/
Author: mreutegg
Date: Thu Sep 11 03:30:41 2008
New Revision: 694208
URL: http://svn.apache.org/viewvc?rev=694208&view=rev
Log:
JCR-1730: Background text extraction not possible when supportHighlighting is set true
Added:
jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LazyTextExtractorField.java
- copied, changed from r694164, jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LazyTextExtractorField.java
Modified:
jackrabbit/branches/1.4/jackrabbit-core/ (props changed)
jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractExcerpt.java
jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractIndex.java
jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java
jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java
jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Util.java
Propchange: jackrabbit/branches/1.4/jackrabbit-core/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Sep 11 03:30:41 2008
@@ -1 +1 @@
-/jackrabbit/trunk/jackrabbit-core:653417,654078,654514,655917,656240,656655,656664,658583,679389,680135
+/jackrabbit/trunk/jackrabbit-core:653417,654078,654514,655917,656240,656655,656664,658583,679389,680135,694164
Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractExcerpt.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractExcerpt.java?rev=694208&r1=694207&r2=694208&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractExcerpt.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractExcerpt.java Thu Sep 11 03:30:41 2008
@@ -26,7 +26,7 @@
import org.apache.lucene.index.TermPositionVector;
import org.apache.lucene.index.TermVectorOffsetInfo;
import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
+import org.apache.lucene.document.Fieldable;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.Token;
import org.apache.jackrabbit.core.NodeId;
@@ -98,7 +98,7 @@
} finally {
tDocs.close();
}
- Field[] fields = doc.getFields(FieldNames.FULLTEXT);
+ Fieldable[] fields = doc.getFieldables(FieldNames.FULLTEXT);
if (fields == null) {
log.debug("Fulltext field not stored, using {}",
SimpleExcerptProvider.class.getName());
Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractIndex.java?rev=694208&r1=694207&r2=694208&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractIndex.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/AbstractIndex.java Thu Sep 11 03:30:41 2008
@@ -23,6 +23,7 @@
import org.apache.lucene.store.Directory;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
+import org.apache.lucene.document.Fieldable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -410,12 +411,12 @@
if (!Util.isDocumentReady(doc)) {
Document copy = new Document();
for (Iterator fields = doc.getFields().iterator(); fields.hasNext(); ) {
- Field f = (Field) fields.next();
- Field field = null;
+ Fieldable f = (Fieldable) fields.next();
+ Fieldable field = null;
Field.TermVector tv = getTermVectorParameter(f);
Field.Store stored = getStoreParameter(f);
Field.Index indexed = getIndexParameter(f);
- if (f.readerValue() != null) {
+ if (f instanceof LazyTextExtractorField || f.readerValue() != null) {
// replace all readers with empty string reader
field = new Field(f.name(), new StringReader(""), tv);
} else if (f.stringValue() != null) {
@@ -503,7 +504,7 @@
* @param f a lucene field.
* @return the index parameter on <code>f</code>.
*/
- private Field.Index getIndexParameter(Field f) {
+ private Field.Index getIndexParameter(Fieldable f) {
if (!f.isIndexed()) {
return Field.Index.NO;
} else if (f.isTokenized()) {
@@ -519,7 +520,7 @@
* @param f a lucene field.
* @return the store parameter on <code>f</code>.
*/
- private Field.Store getStoreParameter(Field f) {
+ private Field.Store getStoreParameter(Fieldable f) {
if (f.isCompressed()) {
return Field.Store.COMPRESS;
} else if (f.isStored()) {
@@ -535,7 +536,7 @@
* @param f a lucene field.
* @return the term vector parameter on <code>f</code>.
*/
- private Field.TermVector getTermVectorParameter(Field f) {
+ private Field.TermVector getTermVectorParameter(Fieldable f) {
if (f.isStorePositionWithTermVector() && f.isStoreOffsetWithTermVector()) {
return Field.TermVector.WITH_POSITIONS_OFFSETS;
} else if (f.isStorePositionWithTermVector()) {
Copied: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LazyTextExtractorField.java (from r694164, jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LazyTextExtractorField.java)
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LazyTextExtractorField.java?p2=jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LazyTextExtractorField.java&p1=jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LazyTextExtractorField.java&r1=694164&r2=694208&rev=694208&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LazyTextExtractorField.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/LazyTextExtractorField.java Thu Sep 11 03:30:41 2008
@@ -19,7 +19,6 @@
import org.apache.lucene.document.AbstractField;
import org.apache.lucene.document.Field;
import org.apache.lucene.analysis.TokenStream;
-import org.apache.commons.io.IOUtils;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
@@ -95,7 +94,11 @@
+ e.getMessage());
log.debug("Dump:", e);
} finally {
- IOUtils.closeQuietly(reader);
+ try {
+ reader.close();
+ } catch (IOException e) {
+ // ignore
+ }
}
extract = textExtract.toString();
}
Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java?rev=694208&r1=694207&r2=694208&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/NodeIndexer.java Thu Sep 11 03:30:41 2008
@@ -35,6 +35,7 @@
import org.slf4j.LoggerFactory;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
+import org.apache.lucene.document.Fieldable;
import javax.jcr.NamespaceException;
import javax.jcr.PropertyType;
@@ -42,7 +43,6 @@
import java.io.InputStream;
import java.io.Reader;
-import java.io.IOException;
import java.util.Calendar;
import java.util.Iterator;
import java.util.Set;
@@ -661,30 +661,11 @@
* @param value the reader value.
* @return a lucene field.
*/
- protected Field createFulltextField(Reader value) {
+ protected Fieldable createFulltextField(Reader value) {
if (supportHighlighting) {
- // need to create a string value
- StringBuffer textExtract = new StringBuffer();
- char[] buffer = new char[1024];
- int len;
- try {
- while ((len = value.read(buffer)) > -1) {
- textExtract.append(buffer, 0, len);
- }
- } catch (IOException e) {
- log.warn("Exception reading value for fulltext field: " +
- e.getMessage());
- log.debug("Dump:", e);
- } finally {
- try {
- value.close();
- } catch (IOException e) {
- // ignore
- }
- }
- return createFulltextField(textExtract.toString());
+ return new LazyTextExtractorField(FieldNames.FULLTEXT, value, true, true);
} else {
- return new Field(FieldNames.FULLTEXT, value);
+ return new LazyTextExtractorField(FieldNames.FULLTEXT, value, false, false);
}
}
Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java?rev=694208&r1=694207&r2=694208&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/SearchIndex.java Thu Sep 11 03:30:41 2008
@@ -57,6 +57,7 @@
import org.apache.lucene.search.SortField;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
+import org.apache.lucene.document.Fieldable;
import org.apache.commons.collections.iterators.AbstractIteratorDecorator;
import org.xml.sax.SAXException;
import org.w3c.dom.Element;
@@ -1088,7 +1089,7 @@
getNamespaceMappings(),
index.getIndexFormatVersion());
// transfer fields to doc if there are any
- Field[] fulltextFields = aDoc.getFields(FieldNames.FULLTEXT);
+ Fieldable[] fulltextFields = aDoc.getFieldables(FieldNames.FULLTEXT);
if (fulltextFields != null) {
for (int k = 0; k < fulltextFields.length; k++) {
doc.add(fulltextFields[k]);
Modified: jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Util.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Util.java?rev=694208&r1=694207&r2=694208&view=diff
==============================================================================
--- jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Util.java (original)
+++ jackrabbit/branches/1.4/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/query/lucene/Util.java Thu Sep 11 03:30:41 2008
@@ -17,11 +17,11 @@
package org.apache.jackrabbit.core.query.lucene;
import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
+import org.apache.lucene.document.Fieldable;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
-import java.util.Enumeration;
+import java.util.Iterator;
import java.io.IOException;
/**
@@ -41,14 +41,17 @@
* @param old the document to dispose.
*/
public static void disposeDocument(Document old) {
- for (Enumeration e = old.fields(); e.hasMoreElements();) {
- Field f = (Field) e.nextElement();
- if (f.readerValue() != null) {
- try {
+ for (Iterator it = old.getFields().iterator(); it.hasNext(); ) {
+ Fieldable f = (Fieldable) it.next();
+ try {
+ if (f.readerValue() != null) {
f.readerValue().close();
- } catch (IOException ex) {
- log.warn("Exception while disposing index document: " + ex);
+ } else if (f instanceof LazyTextExtractorField) {
+ LazyTextExtractorField field = (LazyTextExtractorField) f;
+ field.dispose();
}
+ } catch (IOException ex) {
+ log.warn("Exception while disposing index document: " + ex);
}
}
}
@@ -62,11 +65,11 @@
* otherwise.
*/
public static boolean isDocumentReady(Document doc) {
- for (Enumeration fields = doc.fields(); fields.hasMoreElements(); ) {
- Field f = (Field) fields.nextElement();
- if (f.readerValue() instanceof TextExtractorReader) {
- TextExtractorReader r = (TextExtractorReader) f.readerValue();
- if (!r.isExtractorFinished()) {
+ for (Iterator it = doc.getFields().iterator(); it.hasNext(); ) {
+ Fieldable f = (Fieldable) it.next();
+ if (f instanceof LazyTextExtractorField) {
+ LazyTextExtractorField field = (LazyTextExtractorField) f;
+ if (!field.isExtractorFinished()) {
return false;
}
}