public void RenameGroup(MetadataDefinitionGroupProjection @group) { var term = new Term(FIELD_GROUP_ID, @group.Identity.ToString()); using (var writer = OpenWriter()) using (var searcher = new IndexSearcher(IndexDir, true)) { while (true) { const int BATCH = 100; var result = searcher.Search(new TermQuery(term), BATCH); foreach (var scoreDoc in result.ScoreDocs) { var doc = searcher.Doc(scoreDoc.Doc); doc.GetField(FIELD_GROUP_NAME).SetValue(group.Name); writer.UpdateDocument(new Term(FIELD_ID, doc.Get(FIELD_ID)), doc); } if (result.TotalHits <= BATCH) { break; } } writer.Commit(); writer.Optimize(); } }
public IEnumerable <Field> ToFields(EntityProjection entity, MetadataDefinitionGroupProjection group, IEnumerable <EntityValueProjection> values) { yield return(new Field(FIELD_ID, entity.Identity.ToString(), Field.Store.YES, Field.Index.NOT_ANALYZED)); yield return(new Field(FIELD_NAME, entity.Name, Field.Store.YES, Field.Index.ANALYZED)); yield return(new Field(FIELD_NAME_RAW, entity.Name, Field.Store.NO, Field.Index.NOT_ANALYZED)); if (group != null) { yield return(new Field(FIELD_GROUP_ID, group.Identity.ToString(), Field.Store.YES, Field.Index.ANALYZED)); yield return(new Field(FIELD_GROUP_NAME, group.Name, Field.Store.YES, Field.Index.ANALYZED)); } foreach (var value in values) { foreach (var keyword in MetadataDefinition.KeywordDefinitions.Where(x => x.Equals(value.Name, StringComparison.InvariantCultureIgnoreCase))) { yield return(new Field(keyword, value.Value, Field.Store.YES, Field.Index.ANALYZED)); } yield return(new Field(FIELD_METADATA, value.Value, Field.Store.YES, Field.Index.ANALYZED)); } }
private Document ToDocument(EntityProjection entity, MetadataDefinitionGroupProjection group, IEnumerable <EntityValueProjection> values) { var doc = new Document(); foreach (var field in ToFields(entity, group, values)) { doc.Add(field); } return(doc); }
public void Handle(MetadataDefinitionGroupCreatedEvent @event) { var readmodel = new MetadataDefinitionGroupProjection { Identity = @event.AggregateIdentity, Name = @event.Name.Name, Description = @event.Description.Description, Tracking = new TrackingBase() }; _repository.Save(readmodel.ToMaybe()); }
public void SaveIndex(EntityProjection entity, MetadataDefinitionGroupProjection group, IEnumerable <EntityValueProjection> values) { var doc = ToDocument(entity, group, values); var term = new Term(FIELD_ID, entity.Identity.ToString()); using (var writer = OpenWriter()) { writer.UpdateDocument(term, doc); writer.Commit(); writer.Optimize(); } }
public static MetadataDefinitionGroupSelectResource ToSelectResource( this MetadataDefinitionGroupProjection group) { if (group == null) { return(null); } return(new MetadataDefinitionGroupSelectResource { Id = group.Identity, Text = group.Name }); }
public void Test() { var indexer = new EntityIndexer(); var group = new MetadataDefinitionGroupProjection { Identity = Guid.NewGuid(), Name = "xxx" }; indexer.SaveIndex(new EntityProjection(Guid.NewGuid(), Guid.Empty, "sheep"), group, new EntityValueProjection[0]); indexer.SaveIndex(new EntityProjection(Guid.NewGuid(), Guid.Empty, "shop"), group, new EntityValueProjection[0]); var result = indexer.SearchKeywords("shop", 10, 1); Assert.Greater(result.TotalHits, 0); }
public SchemaTransferObject(MetadataDefinitionGroupProjection entity, IEnumerable <MetadataDefinitionGroupMetadataProjection> attributes) { Entity = entity; Attributes = attributes; }
public static MetadataDefinitionGroupResource ToMetadataDefinitionGroupResource(this MetadataDefinitionGroupProjection group) { if (group.Tracking != null) { return new MetadataDefinitionGroupResource { Identity = group.Identity, Name = group.Name, Description = group.Description, Tracking = group.Tracking } } ; return(new MetadataDefinitionGroupResource { Identity = @group.Identity, Name = @group.Name, Description = @group.Description, Tracking = new TrackingBase(), Definitions = new MetadataDefinitionSelectResource[0] }); }