public static IndexOperation ToIndexOperation(this SearchIndexItem item)
        {
            var op = new IndexOperation(IndexOperationType.Upload, "id", item.Id.ToString(CultureInfo.InvariantCulture))
                     .WithProperty("title", item.Title)
                     .WithProperty("projectid", item.ProjectId.ToString(CultureInfo.InvariantCulture))
                     .WithProperty("status", item.Status)
                     .WithProperty("lastupdatedate", item.LastUpdateDate)
                     .WithProperty("details", item.Details)
                     .WithProperty("tags", item.Tags)
                     .WithProperty("events", item.Events);

            return(op);
        }
Пример #2
0
 private void UpdateIndexForItem(SearchIndexItem item)
 {
     TdIndexWriter.UpdateDocument(
         new Term("id", item.Id.ToString(CultureInfo.InvariantCulture)),
         item.ToLuceneDocument());
 }
Пример #3
0
        public static void IndexDocument([QueueTrigger("ticket-search-queue")] SearchIndexItem document)
        {
            var task = Program.SearchProvider.SendItemsToIndexAsync(new[] { document });

            task.Wait();
        }
        public static Document ToLuceneDocument(this SearchIndexItem item)
        {
            var eventText = item.Events != null && item.Events.Any() ? string.Join(" ", item.Events) : string.Empty;
            var tagList   = item.Tags != null && item.Tags.Any() ? string.Join(" ", item.Tags) : string.Empty;

            var id = new Field(
                "id",
                item.Id.ToString(CultureInfo.InvariantCulture),
                Field.Store.YES,
                Field.Index.NOT_ANALYZED,
                Field.TermVector.NO)
            {
                Boost = 3F
            };

            var projectid = new Field(
                "projectid",
                item.ProjectId.ToString(CultureInfo.InvariantCulture),
                Field.Store.YES,
                Field.Index.NOT_ANALYZED,
                Field.TermVector.NO)
            {
                Boost = 0F
            };

            var title = new Field(
                "title",
                item.Title ?? string.Empty,
                Field.Store.NO,
                Field.Index.ANALYZED,
                Field.TermVector.YES)
            {
                Boost = 2F
            };

            var status = new Field(
                "status",
                item.Title ?? string.Empty,
                Field.Store.YES,
                Field.Index.NOT_ANALYZED,
                Field.TermVector.NO);
            var lastupdatedate = new Field(
                "status",
                DateTools.DateToString(item.LastUpdateDate.DateTime, DateTools.Resolution.SECOND),
                Field.Store.YES,
                Field.Index.NOT_ANALYZED,
                Field.TermVector.NO
                );
            var details = new Field(
                "details",
                item.Details ?? string.Empty,
                Field.Store.NO,
                Field.Index.ANALYZED,
                Field.TermVector.YES);
            var tags = new Field(
                "tags",
                tagList,
                Field.Store.NO,
                Field.Index.ANALYZED,
                Field.TermVector.NO)
            {
                Boost = 2.5F
            };
            var events = new Field(
                "events",
                eventText,
                Field.Store.NO,
                Field.Index.ANALYZED,
                Field.TermVector.YES)
            {
                Boost = 0.75F
            };

            var doc = new Document();

            doc.Add(id);
            doc.Add(projectid);
            doc.Add(title);
            doc.Add(status);
            doc.Add(lastupdatedate);
            doc.Add(details);
            doc.Add(tags);
            doc.Add(events);
            return(doc);
        }