public void should_have_title(string article)
 {
     using (var sr = new StreamReader(article))
     {
         var markdown = sr.ReadToEnd();
         if (markdown.Contains("@Tags"))
         {
             var resource = _articleLocator.PathToResource(article);
             var parsedArticle = new ArticleParser(markdown, resource);
             parsedArticle.Title.Should().NotBeNullOrEmpty();
         }
     }
 }
 public void should_have_date(string article)
 {
     using (var sr = new StreamReader(article))
     {
         var markdown = sr.ReadToEnd();
         if (markdown.Contains("@Tags"))
         {
             var resource = _articleLocator.PathToResource(article);
             var parsedArticle = new ArticleParser(markdown, resource);
             parsedArticle.BlogDate.Should().NotBe(DateTime.MinValue);
         }
     }
 }
Ejemplo n.º 3
0
        private static void Map(ArticleParser parser)
        {
            var doc = new Document();

            if (!string.IsNullOrEmpty(parser.Category))
                doc.Add(new Field("category", parser.Category, Field.Store.YES, Field.Index.ANALYZED));

            if ( !string.IsNullOrEmpty(parser.Id))
                doc.Add(new Field("id", parser.Id, Field.Store.YES, Field.Index.ANALYZED));

            doc.Add(new Field("author", parser.Author, Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field("title", parser.Title, Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field("body", parser.Body, Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field("abstract", parser.Abstract, Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field("image", parser.Image, Field.Store.YES, Field.Index.ANALYZED));
            doc.Add(new Field("bgimage", parser.BgImage, Field.Store.YES, Field.Index.ANALYZED));

            foreach (var tag in parser.Tags)
            {
                doc.Add(new Field("tags", tag, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));
            }

            // TODO : Should probably be stored separatly, in a profile index instead.
            foreach (var role in parser.Roles)
            {
                doc.Add(new Field("roles", role, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));
            }

            var parts = parser.ResourceName.Split(new[]{'/'}, StringSplitOptions.RemoveEmptyEntries);
            foreach (var part in parts)
            {
                doc.Add(new Field("resource", part, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));
            }

            doc.Add(new Field("date", DateTools.DateToString(parser.BlogDate, DateTools.Resolution.DAY), Field.Store.YES, Field.Index.ANALYZED));

            _indexWriter.AddDocument(doc);
            _indexWriter.Optimize();
        }