mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Updated handling of TEXT field - no longer in the index - built from all content fields
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4521 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1515,7 +1515,7 @@ public class LuceneIndexerImpl2 extends LuceneBase2 implements LuceneIndexer2
|
|||||||
// don't index from the reader
|
// don't index from the reader
|
||||||
readerReady = false;
|
readerReady = false;
|
||||||
// not indexed: no transformation
|
// not indexed: no transformation
|
||||||
doc.add(new Field("TEXT", NOT_INDEXED_NO_TRANSFORMATION, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.NO));
|
//doc.add(new Field("TEXT", NOT_INDEXED_NO_TRANSFORMATION, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.NO));
|
||||||
doc.add(new Field(attributeName, NOT_INDEXED_NO_TRANSFORMATION, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.NO));
|
doc.add(new Field(attributeName, NOT_INDEXED_NO_TRANSFORMATION, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.NO));
|
||||||
}
|
}
|
||||||
else if (indexAtomicPropertiesOnly
|
else if (indexAtomicPropertiesOnly
|
||||||
@@ -1550,7 +1550,7 @@ public class LuceneIndexerImpl2 extends LuceneBase2 implements LuceneIndexer2
|
|||||||
readerReady = false;
|
readerReady = false;
|
||||||
// not indexed: transformation
|
// not indexed: transformation
|
||||||
// failed
|
// failed
|
||||||
doc.add(new Field("TEXT", NOT_INDEXED_TRANSFORMATION_FAILED, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.NO));
|
//doc.add(new Field("TEXT", NOT_INDEXED_TRANSFORMATION_FAILED, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.NO));
|
||||||
doc.add(new Field(attributeName, NOT_INDEXED_TRANSFORMATION_FAILED, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.NO));
|
doc.add(new Field(attributeName, NOT_INDEXED_TRANSFORMATION_FAILED, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.NO));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1560,18 +1560,18 @@ public class LuceneIndexerImpl2 extends LuceneBase2 implements LuceneIndexer2
|
|||||||
if (readerReady)
|
if (readerReady)
|
||||||
{
|
{
|
||||||
InputStreamReader isr = null;
|
InputStreamReader isr = null;
|
||||||
InputStream ris = reader.getContentInputStream();
|
//InputStream ris = reader.getContentInputStream();
|
||||||
try
|
//try
|
||||||
{
|
//{
|
||||||
isr = new InputStreamReader(ris, "UTF-8");
|
// isr = new InputStreamReader(ris, "UTF-8");
|
||||||
}
|
// }
|
||||||
catch (UnsupportedEncodingException e)
|
//catch (UnsupportedEncodingException e)
|
||||||
{
|
// {
|
||||||
isr = new InputStreamReader(ris);
|
// isr = new InputStreamReader(ris);
|
||||||
}
|
//}
|
||||||
doc.add(new Field("TEXT", isr, Field.TermVector.NO));
|
//doc.add(new Field("TEXT", isr, Field.TermVector.NO));
|
||||||
|
|
||||||
ris = reader.getReader().getContentInputStream();
|
InputStream ris = reader.getReader().getContentInputStream();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
isr = new InputStreamReader(ris, "UTF-8");
|
isr = new InputStreamReader(ris, "UTF-8");
|
||||||
|
@@ -19,12 +19,15 @@ package org.alfresco.repo.search.impl.lucene;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.StringReader;
|
import java.io.StringReader;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import org.alfresco.repo.search.SearcherException;
|
import org.alfresco.repo.search.SearcherException;
|
||||||
import org.alfresco.repo.search.impl.lucene.query.PathQuery;
|
import org.alfresco.repo.search.impl.lucene.query.PathQuery;
|
||||||
import org.alfresco.service.cmr.dictionary.AspectDefinition;
|
import org.alfresco.service.cmr.dictionary.AspectDefinition;
|
||||||
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
|
||||||
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
import org.alfresco.service.cmr.dictionary.DictionaryService;
|
||||||
|
import org.alfresco.service.cmr.dictionary.ModelDefinition;
|
||||||
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
|
import org.alfresco.service.cmr.dictionary.PropertyDefinition;
|
||||||
import org.alfresco.service.cmr.dictionary.TypeDefinition;
|
import org.alfresco.service.cmr.dictionary.TypeDefinition;
|
||||||
import org.alfresco.service.namespace.NamespacePrefixResolver;
|
import org.alfresco.service.namespace.NamespacePrefixResolver;
|
||||||
@@ -125,6 +128,18 @@ public class LuceneQueryParser extends QueryParser
|
|||||||
pathQuery.setRepeats(true);
|
pathQuery.setRepeats(true);
|
||||||
return pathQuery;
|
return pathQuery;
|
||||||
}
|
}
|
||||||
|
else if(field.equals("TEXT"))
|
||||||
|
{
|
||||||
|
Set<QName> contentAttributes = getContentAttributes();
|
||||||
|
BooleanQuery query = new BooleanQuery();
|
||||||
|
for(QName qname : contentAttributes)
|
||||||
|
{
|
||||||
|
// The super implementation will create phrase queries etc if required
|
||||||
|
Query part = super.getFieldQuery("@"+qname.toString(), queryText);
|
||||||
|
query.add(part, Occur.SHOULD);
|
||||||
|
}
|
||||||
|
return query;
|
||||||
|
}
|
||||||
else if (field.equals("ID"))
|
else if (field.equals("ID"))
|
||||||
{
|
{
|
||||||
TermQuery termQuery = new TermQuery(new Term(field, queryText));
|
TermQuery termQuery = new TermQuery(new Term(field, queryText));
|
||||||
@@ -278,8 +293,7 @@ public class LuceneQueryParser extends QueryParser
|
|||||||
PropertyDefinition propertyDef = dictionaryService.getProperty(propertyQName);
|
PropertyDefinition propertyDef = dictionaryService.getProperty(propertyQName);
|
||||||
if((propertyDef != null) && (propertyDef.getDataType().getName().equals(DataTypeDefinition.CONTENT)))
|
if((propertyDef != null) && (propertyDef.getDataType().getName().equals(DataTypeDefinition.CONTENT)))
|
||||||
{
|
{
|
||||||
TermQuery termQuery = new TermQuery(new Term(expandedFieldName, queryText));
|
return super.getFieldQuery(expandedFieldName, queryText);
|
||||||
return termQuery;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -301,6 +315,37 @@ public class LuceneQueryParser extends QueryParser
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Set<QName> getContentAttributes()
|
||||||
|
{
|
||||||
|
HashSet<QName> contentAttributes = new HashSet<QName>();
|
||||||
|
|
||||||
|
for(QName type : dictionaryService.getAllTypes())
|
||||||
|
{
|
||||||
|
Map<QName, PropertyDefinition> props = dictionaryService.getType(type).getProperties();
|
||||||
|
for(QName prop : props.keySet())
|
||||||
|
{
|
||||||
|
if(props.get(prop).getDataType().getName().equals(DataTypeDefinition.CONTENT))
|
||||||
|
{
|
||||||
|
contentAttributes.add(prop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(QName aspect : dictionaryService.getAllAspects())
|
||||||
|
{
|
||||||
|
Map<QName, PropertyDefinition> props = dictionaryService.getAspect(aspect).getProperties();
|
||||||
|
for(QName prop : props.keySet())
|
||||||
|
{
|
||||||
|
if(props.get(prop).getDataType().getName().equals(DataTypeDefinition.CONTENT))
|
||||||
|
{
|
||||||
|
contentAttributes.add(prop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return contentAttributes;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @exception ParseException
|
* @exception ParseException
|
||||||
* throw in overridden method to disallow
|
* throw in overridden method to disallow
|
||||||
@@ -374,5 +419,7 @@ public class LuceneQueryParser extends QueryParser
|
|||||||
{
|
{
|
||||||
this.dictionaryService = dictionaryService;
|
this.dictionaryService = dictionaryService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user