public Index ( RavenJObject document, Raven.Database.Indexing.IndexDefinition indexDefinition, |
||
document | RavenJObject | |
indexDefinition | Raven.Database.Indexing.IndexDefinition | |
defaultStorage | ||
Результат | IEnumerable |
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); }
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); }
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)); }
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 }); }
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); }
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 }); }
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 }); }
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); }
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 }); }
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 }); }
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 }; }
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 }; }
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); }
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 }; }
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; }