Esempio n. 1
0
        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();
                }
        }
Esempio n. 2
0
        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));
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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());
        }
Esempio n. 5
0
        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
            });
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
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]
            });
        }