Exemplo n.º 1
0
        public Article AddWiki(Article a)
        {
            List<Tag> tags = a.Tags.ToList();
            List<Category> kate = a.Categories.ToList();

            string cmd = string.Format("EXEC dbo.usp_ArticlesInsert '{0}',null,'{1}','{2}','{3}','{4}',{5},'{6}','{7}',null,'{8}',null,{9}", a.Name, a.Content, a.DatePublish.Value.ToString("MM/dd/yyyy HH:mm:ss", CultureInfo.InvariantCulture), a.IsPublish, a.IsActive, a.Views, a.GUID, a.CreatorIP, a.CreatorUserAgent, a.UserID);
            a = context.Database.SqlQuery<Article>(cmd).SingleOrDefault();

            foreach (var tag in tags)
            {
                context.Database.ExecuteSqlCommand("EXEC dbo.usp_TagInArticleInsert " + a.ArticlesID + "," + tag.TagID);
            }
            foreach (var cat in kate)
            {
                context.Database.ExecuteSqlCommand("EXEC [dbo].[usp_ArticlesInCategoryInsert] " + a.ArticlesID + "," + cat.CategoryID);
            }
            return a;
        }
        public List<ArticleRecommender> GetArtikliPreporucine(double ElasticnostFinal = 0.65, double ElasticnostTag = 0.65, double ElasticnostKategorije = 0.65, double ElasticnostOcjene = 0.35)
        {
            List<Article> la = new List<Article>();
            List<ArticleRecommender> listaPreporuka = new List<ArticleRecommender>();

            using (DBBL Baza = new DBBL())
            {
                la = Baza.GetAllWikis();
                wiki = this.wiki;

                VektorskaDuzina<Tag> vektorTagDomaci = new VektorskaDuzina<Tag>(wiki.Tags.ToArray());
                VektorskaDuzina<Category> vektorKategorijeDomaci = new VektorskaDuzina<Category>(wiki.Categories.ToArray());
                VektorskaDuzina<ArticlesRating> vektorRatingDomaci = new VektorskaDuzina<ArticlesRating>(wiki.ArticlesRatings.ToArray());

                foreach (var w in la)
                {
                    VektorskaDuzina<Tag> vektorTagExterni = new VektorskaDuzina<Tag>(w.Tags.ToArray());
                    ItemBase<Tag> ibTag = new ItemBase<Tag>(vektorTagDomaci, vektorTagExterni);

                    VektorskaDuzina<Category> vektorKategorijeExterni = new VektorskaDuzina<Category>(w.Categories.ToArray());
                    ItemBase<Category> ibKategorije = new ItemBase<Category>(vektorKategorijeDomaci, vektorKategorijeExterni);

                    VektorskaDuzina<ArticlesRating> vektorRatingExterni = new VektorskaDuzina<ArticlesRating>(w.ArticlesRatings.ToArray());
                    ItemBase<ArticlesRating> ibRating = new ItemBase<ArticlesRating>(vektorRatingDomaci, vektorRatingExterni);

                    double tpr = ibTag.GetSlicnost(false);
                    double kpr = ibKategorije.GetSlicnost(false);
                    double rpr = ibRating.GetSlicnost(false);
                    double pr = (tpr + kpr ) * 1/(double)2;
                    if (pr >= ElasticnostFinal && w.ArticlesID != wiki.ArticlesID)
                    {
                        listaPreporuka.Add(new ArticleRecommender()
                        {
                            Name = w.Name,
                            Score = pr,
                            WikiID = w.ArticlesID
                        });
                    }

                }
                return listaPreporuka.OrderByDescending(x=>x.Score).Take(10).ToList();

            }
        }
        public ActionResult AddWiki(string Naslov, string Content, string jsonTag, string jsonKat)
        {
            Article a = new Article();
            a.Name = Server.HtmlDecode(Naslov).Replace("'", "&#39;").Trim();
            a.Content = Server.HtmlDecode(Content).Replace("'", "&#39;").Trim();
            a.CreatorIP = this.HttpContext.Request.GetIpAdresa();
            a.CreatorUserAgent = this.HttpContext.Request.UserAgent;
            a.DatePublish = DateTime.Now;
            a.GUID = Guid.NewGuid();
            a.IsActive = true;
            a.Views = 0;
            a.IsPublish = true;
            a.UserID = Autorizacija.Autorizacija.GetCurrentUser(this.HttpContext).UserID;

            var ListaTagova = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Models.Json.Tag>>(jsonTag);
            var ListaKategorija = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Models.Json.Kategorija>>(jsonKat);

            List<Igman.DB.DAL.Tag> listTempTag = SinhronyzeWithDB(ListaTagova.Where(x => x.TagID == "-1").ToList(), ListaTagova.Where(x => x.TagID != "-1").ToList());
            List<Category> listaKategorija = SinhronyzeWithDB(ListaKategorija);

            a.Categories = listaKategorija;
            a.Tags = listTempTag;

            using (DBBL Baza = new DBBL())
            {
                a = Baza.AddWiki(a);
            }

            #region Lucine
            LuceneEngine.LuceneDbEngine ldbe = new LuceneEngine.LuceneDbEngine();
            ldbe.InsertWiki(a);
            #endregion

            TempData["wikiSuccess"] = true;
            return RedirectToAction("index", "Articles");
        }
 public ItemPreporuka(Article a)
 {
     wiki = a;
 }
 private List<ArticleRecommender> GetPreporuka(Article a)
 {
     Preporuke.ItemPreporuka ip = new Preporuke.ItemPreporuka(a);
     return ip.GetArtikliPreporucine();
 }
Exemplo n.º 6
0
        public Article EditWiki(Article a)
        {
            context.Database.ExecuteSqlCommand("EXEC dbo.DeleteTagInCategory " + a.ArticlesID);
            context.Database.ExecuteSqlCommand("EXEC dbo.DeleteTagInArticles " + a.ArticlesID);

            foreach (var cat in a.Categories.ToList())
            {
                context.Database.ExecuteSqlCommand("EXEC [dbo].[usp_ArticlesInCategoryInsert] "+a.ArticlesID+","+cat.CategoryID);

            }
            foreach (var tag in a.Tags.ToList())
            {
                 context.Database.ExecuteSqlCommand("EXEC [dbo].[usp_TagInArticleInsert] "+a.ArticlesID+","+tag.TagID);

            }
            context = new DBEntities();
            Article b = context.Articles.Where(x => x.ArticlesID == a.ArticlesID).SingleOrDefault();
            b = a;
            context.SaveChanges();
            return b;
        }
        public bool DeleteWiki(Article wiki)
        {
            try
            {
                IndexWriter iw = new IndexWriter(this.folder, this.anliza, IndexWriter.MaxFieldLength.UNLIMITED);
                Term t = new Term("ArticlesID", wiki.ArticlesID.ToString());
                iw.DeleteDocuments(t);

                iw.Optimize();
                iw.Commit();
                iw.Dispose();

                return true;
            }
            catch (Exception)
            {

                return false;
            }
        }
        public bool UpdateWiki(Article wiki)
        {
            try
            {
                if (DeleteWiki(wiki))
                    if (InsertWiki(wiki))
                        return true;
                return false;
            }
            catch (Exception)
            {

                return false;
            }
        }
        public bool InsertWiki(Article wiki)
        {
            try
            {
                IndexWriter iw = new IndexWriter(this.folder, this.anliza, IndexWriter.MaxFieldLength.UNLIMITED);
                var WikiDocument = new Document();

                WikiDocument.Add(new Field("ArticlesID", wiki.ArticlesID.ToString(), Field.Store.YES, Field.Index.ANALYZED));
                WikiDocument.Add(new Field("Name", wiki.Name, Field.Store.YES, Field.Index.ANALYZED));
                WikiDocument.Add(new Field("Content", wiki.Content.OcistiHtml(), Field.Store.YES, Field.Index.ANALYZED));

                iw.AddDocument(WikiDocument);
                iw.Optimize();
                iw.Commit();
                iw.Dispose();

                return true;

            }
            catch (Exception)
            {

                return false;
            }
        }