Index() public méthode

public Index ( RavenJObject document, Raven.Database.Indexing.IndexDefinition indexDefinition, Field defaultStorage ) : IEnumerable
document RavenJObject
indexDefinition Raven.Database.Indexing.IndexDefinition
defaultStorage Lucene.Net.Documents.Field
Résultat IEnumerable
Exemple #1
0
            private IEnumerable <AbstractField> GetFields(object doc, out float boost)
            {
                boost = 1;
                var boostedValue = doc as BoostedValue;

                if (boostedValue != null)
                {
                    doc   = boostedValue.Value;
                    boost = boostedValue.Boost;
                }
                IEnumerable <AbstractField> fields;

                if (doc is IDynamicJsonObject)
                {
                    fields = anonymousObjectToLuceneDocumentConverter.Index(((IDynamicJsonObject)doc).Inner, Field.Store.YES);
                }
                else
                {
                    properties = properties ?? TypeDescriptor.GetProperties(doc);
                    fields     = anonymousObjectToLuceneDocumentConverter.Index(doc, properties, Field.Store.YES);
                }
                if (Math.Abs(boost - 1) > float.Epsilon)
                {
                    var abstractFields = fields.ToList();
                    foreach (var abstractField in abstractFields)
                    {
                        abstractField.OmitNorms = false;
                    }
                    return(abstractFields);
                }
                return(fields);
            }
Exemple #2
0
        private IEnumerable <AbstractField> GetFields(AnonymousObjectToLuceneDocumentConverter anonymousObjectToLuceneDocumentConverter, object doc, ref PropertyDescriptorCollection properties)
        {
            IEnumerable <AbstractField> fields;

            if (doc is DynamicJsonObject)
            {
                fields = anonymousObjectToLuceneDocumentConverter.Index(((DynamicJsonObject)doc).Inner,
                                                                        indexDefinition, Field.Store.YES);
            }
            else
            {
                properties = properties ?? TypeDescriptor.GetProperties(doc);
                fields     = anonymousObjectToLuceneDocumentConverter.Index(doc, properties, indexDefinition, Field.Store.YES);
            }
            return(fields);
        }
Exemple #3
0
 private IEnumerable <AbstractField> ExtractIndexDataFromDocument(PropertyDescriptorCollection properties, object doc, out string newDocId)
 {
     if (properties == null)
     {
         properties = TypeDescriptor.GetProperties(doc);
     }
     newDocId = properties.Find("__document_id", false).GetValue(doc) as string;
     return(AnonymousObjectToLuceneDocumentConverter.Index(doc, properties, indexDefinition, Field.Store.NO));
 }
Exemple #4
0
        private IndexingResult ExtractIndexDataFromDocument(AnonymousObjectToLuceneDocumentConverter anonymousObjectToLuceneDocumentConverter, DynamicJsonObject dynamicJsonObject)
        {
            var newDocId = dynamicJsonObject.GetRootParentOrSelf().GetDocumentId();

            return(new IndexingResult
            {
                Fields = anonymousObjectToLuceneDocumentConverter.Index(((IDynamicJsonObject)dynamicJsonObject).Inner, Field.Store.NO).ToList(),
                NewDocId = newDocId is DynamicNullObject ? null : (string)newDocId,
                ShouldSkip = false
            });
        }
Exemple #5
0
        private IndexingResult ExtractIndexDataFromDocument(DynamicJsonObject dynamicJsonObject)
        {
            var newDocId = dynamicJsonObject.GetDocumentId();

            return(new IndexingResult
            {
                Fields = AnonymousObjectToLuceneDocumentConverter.Index(dynamicJsonObject.Inner, indexDefinition,
                                                                        Field.Store.NO),
                NewDocId = newDocId is DynamicNullObject ? null : (string)newDocId,
                ShouldSkip = false
            });
        }
            private IEnumerable <AbstractField> GetFields(object doc, out float boost)
            {
                boost = 1;
                var boostedValue = doc as BoostedValue;

                if (boostedValue != null)
                {
                    doc   = boostedValue.Value;
                    boost = boostedValue.Boost;
                }
                IEnumerable <AbstractField> fields = null;

                try
                {
                    var dynamicJsonObject = doc as IDynamicJsonObject;
                    if (dynamicJsonObject != null)
                    {
                        fields = anonymousObjectToLuceneDocumentConverter.Index(dynamicJsonObject.Inner, Field.Store.NO);
                    }
                    else
                    {
                        var properties = propertyAccessorCache.GetOrAdd(doc.GetType(), PropertyAccessor.Create);
                        fields = anonymousObjectToLuceneDocumentConverter.Index(doc, properties, Field.Store.NO);
                    }
                }
                catch (InvalidShapeException)
                {
                }

                if (Math.Abs(boost - 1) > float.Epsilon)
                {
                    var abstractFields = fields.ToList();
                    foreach (var abstractField in abstractFields)
                    {
                        abstractField.OmitNorms = false;
                    }
                    return(abstractFields);
                }
                return(fields);
            }
Exemple #7
0
        private IndexingResult ExtractIndexDataFromDocument(AnonymousObjectToLuceneDocumentConverter anonymousObjectToLuceneDocumentConverter, object doc)
        {
            Type type = doc.GetType();
            PropertyDescriptorCollection properties =
                propertyDescriptorCache.GetOrAdd(type, TypeDescriptor.GetProperties);

            var abstractFields = anonymousObjectToLuceneDocumentConverter.Index(doc, properties, Field.Store.NO).ToList();

            return(new IndexingResult()
            {
                Fields = abstractFields,
                NewDocId = properties.Find(Constants.DocumentIdFieldName, false).GetValue(doc) as string,
                ShouldSkip = properties.Count > 1 &&               // we always have at least __document_id
                             abstractFields.Count == 0
            });
        }
Exemple #8
0
        private IndexingResult ExtractIndexDataFromDocument(PropertyDescriptorCollection properties, object doc)
        {
            if (properties == null)
            {
                properties = TypeDescriptor.GetProperties(doc);
            }
            var abstractFields = AnonymousObjectToLuceneDocumentConverter.Index(doc, properties, indexDefinition, Field.Store.NO).ToList();

            return(new IndexingResult()
            {
                Fields = abstractFields,
                NewDocId = properties.Find(Constants.DocumentIdFieldName, false).GetValue(doc) as string,
                ShouldSkip = properties.Count > 1 && // we always have at least __document_id
                             abstractFields.Count == 0
            });
        }
Exemple #9
0
        public override void IndexDocuments(
            AbstractViewGenerator viewGenerator,
            IEnumerable<object> documents,
            WorkContext context,
            DocumentStorageActions actions)
        {
            actions.SetCurrentIndexStatsTo(name);
            var count = 0;
            Write(indexWriter =>
            {
                string currentId = null;
                var converter = new AnonymousObjectToLuceneDocumentConverter();
                PropertyDescriptorCollection properties = null;
                foreach (var doc in RobustEnumeration(documents, viewGenerator.MapDefinition, actions, context))
                {
                    count++;

                    if (properties == null)
                    {
                        properties = TypeDescriptor.GetProperties(doc);
                    }
                    var newDocId = properties.Find("__document_id", false).GetValue(doc) as string;
                    var fields = converter.Index(doc, properties, indexDefinition);
                    if (currentId != newDocId) // new document id, so delete all old values matching it
                    {
                        indexWriter.DeleteDocuments(new Term("__document_id", newDocId));
                    }

                    if (newDocId != null)
                    {
                        var luceneDoc = new Document();
                        luceneDoc.Add(new Field("__document_id", newDocId, Field.Store.YES, Field.Index.UN_TOKENIZED));

                        currentId = newDocId;
                        CopyFieldsToDocumentButRemoveDuplicateValues(luceneDoc, fields);
                        log.DebugFormat("Indexing document {0}", luceneDoc);
                        indexWriter.AddDocument(luceneDoc);
                    }

                    actions.IncrementSuccessIndexing();
                }

                return currentId != null;
            });
            log.DebugFormat("Indexed {0} documents for {1}", count, name);
        }
Exemple #10
0
        private IndexingResult ExtractIndexDataFromDocument(AnonymousObjectToLuceneDocumentConverter anonymousObjectToLuceneDocumentConverter, DynamicJsonObject dynamicJsonObject)
        {
            var newDocIdAsObject = dynamicJsonObject.GetRootParentOrSelf().GetDocumentId();
            var newDocId         = newDocIdAsObject is DynamicNullObject ? null : (string)newDocIdAsObject;
            List <AbstractField> abstractFields;

            try
            {
                abstractFields = anonymousObjectToLuceneDocumentConverter.Index(((IDynamicJsonObject)dynamicJsonObject).Inner, Field.Store.NO).ToList();
            }
            catch (InvalidShapeException e)
            {
                throw new InvalidSpatialShapException(e, newDocId);
            }

            return(new IndexingResult
            {
                Fields = abstractFields,
                NewDocId = newDocId,
                ShouldSkip = false
            });
        }
Exemple #11
0
        private IndexingResult ExtractIndexDataFromDocument(AnonymousObjectToLuceneDocumentConverter anonymousObjectToLuceneDocumentConverter, object doc)
        {
            PropertyAccessor propertyAccessor;
            var newDocId = GetDocumentId(doc, out propertyAccessor);

            List <AbstractField> abstractFields;

            try
            {
                abstractFields = anonymousObjectToLuceneDocumentConverter.Index(doc, propertyAccessor, Field.Store.NO).ToList();
            }
            catch (InvalidShapeException e)
            {
                throw new InvalidSpatialShapException(e, newDocId);
            }

            return(new IndexingResult
            {
                Fields = abstractFields,
                NewDocId = newDocId,
                ShouldSkip = propertyAccessor.Properies.Count > 1 && // we always have at least __document_id
                             abstractFields.Count == 0
            });
        }
Exemple #12
0
        private IndexingResult ExtractIndexDataFromDocument(AnonymousObjectToLuceneDocumentConverter anonymousObjectToLuceneDocumentConverter, object doc)
        {
            Type type = doc.GetType();
            PropertyDescriptorCollection properties =
                propertyDescriptorCache.GetOrAdd(type, TypeDescriptor.GetProperties);

            var abstractFields = anonymousObjectToLuceneDocumentConverter.Index(doc, properties, Field.Store.NO).ToList();
            return new IndexingResult()
            {
                Fields = abstractFields,
                NewDocId = properties.Find(Constants.DocumentIdFieldName, false).GetValue(doc) as string,
                ShouldSkip = properties.Count > 1  // we always have at least __document_id
                            && abstractFields.Count == 0
            };
        }
Exemple #13
0
 private IndexingResult ExtractIndexDataFromDocument(AnonymousObjectToLuceneDocumentConverter anonymousObjectToLuceneDocumentConverter, DynamicJsonObject dynamicJsonObject)
 {
     var newDocId = dynamicJsonObject.GetRootParentOrSelf().GetDocumentId();
     return new IndexingResult
     {
         Fields = anonymousObjectToLuceneDocumentConverter.Index(((IDynamicJsonObject)dynamicJsonObject).Inner, Field.Store.NO).ToList(),
         NewDocId = newDocId is DynamicNullObject ? null : (string)newDocId,
         ShouldSkip = false
     };
 }
Exemple #14
0
        public void ReduceDocuments(AbstractViewGenerator viewGenerator,
            IEnumerable<object> mappedResults,
            WorkContext context,
            DocumentStorageActions actions,
            string reduceKey)
        {
            actions.SetCurrentIndexStatsTo(name);
            var count = 0;
            Write(indexWriter =>
            {
                indexWriter.DeleteDocuments(new Term(viewGenerator.GroupByField, reduceKey));
                var converter = new AnonymousObjectToLuceneDocumentConverter();
                PropertyDescriptorCollection properties = null;
                foreach (var doc in RobustEnumeration(mappedResults, viewGenerator.ReduceDefinition, actions, context))
                {
                    count++;
                    if (properties == null)
                    {
                        properties = TypeDescriptor.GetProperties(doc);
                    }
                    var fields = converter.Index(doc, properties, indexDefinition);

                    var luceneDoc = new Document();
                    foreach (var field in fields)
                    {
                        luceneDoc.Add(field);
                    }

                    indexWriter.AddDocument(luceneDoc);
                    actions.IncrementSuccessIndexing();
                }

                return true;
            });
            log.DebugFormat("Reduce resulted in {0} entires for {1} for reduce key {2}", count, name, reduceKey);
        }
Exemple #15
0
 private IEnumerable <AbstractField> ExtractIndexDataFromDocument(DynamicJsonObject dynamicJsonObject, out string newDocId)
 {
     newDocId = dynamicJsonObject.GetDocumentId();
     return(AnonymousObjectToLuceneDocumentConverter.Index(dynamicJsonObject.Inner, indexDefinition,
                                                           Field.Store.NO));
 }
		private IndexingResult ExtractIndexDataFromDocument(AnonymousObjectToLuceneDocumentConverter anonymousObjectToLuceneDocumentConverter, DynamicJsonObject dynamicJsonObject)
		{
			var newDocIdAsObject = dynamicJsonObject.GetRootParentOrSelf().GetDocumentId();
			var newDocId = newDocIdAsObject is DynamicNullObject ? null : (string)newDocIdAsObject;
			List<AbstractField> abstractFields;

			try
			{
				abstractFields = anonymousObjectToLuceneDocumentConverter.Index(((IDynamicJsonObject)dynamicJsonObject).Inner, Field.Store.NO).ToList();
			}
			catch (InvalidShapeException e)
			{
				throw new InvalidSpatialShapeException(e, newDocId);
			}

			return new IndexingResult
			{
				Fields = abstractFields,
				NewDocId = newDocId,
				ShouldSkip = false
			};
		}
		private IndexingResult ExtractIndexDataFromDocument(AnonymousObjectToLuceneDocumentConverter anonymousObjectToLuceneDocumentConverter, object doc)
		{
			PropertyDescriptorCollection properties;
			var newDocId = GetDocumentIdByReflection(doc, out properties);

			List<AbstractField> abstractFields;
			try
			{
				abstractFields = anonymousObjectToLuceneDocumentConverter.Index(doc, properties, Field.Store.NO).ToList();
			}
			catch (InvalidShapeException e)
			{
				throw new InvalidSpatialShapeException(e, newDocId);
			}

			return new IndexingResult
			{
				Fields = abstractFields,
				NewDocId = newDocId,
				ShouldSkip = properties.Count > 1  // we always have at least __document_id
							&& abstractFields.Count == 0
			};
		}
Exemple #18
0
		private IEnumerable<AbstractField> GetFields(AnonymousObjectToLuceneDocumentConverter anonymousObjectToLuceneDocumentConverter, object doc, ref PropertyDescriptorCollection properties)
		{
			IEnumerable<AbstractField> fields;
			if (doc is DynamicJsonObject)
			{
				fields = anonymousObjectToLuceneDocumentConverter.Index(((DynamicJsonObject)doc).Inner,
																		indexDefinition, Field.Store.YES);
			}
			else
			{
				properties = properties ?? TypeDescriptor.GetProperties(doc);
				fields = anonymousObjectToLuceneDocumentConverter.Index(doc, properties, indexDefinition, Field.Store.YES);
			}
			return fields;
		}