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("'", "'").Trim(); a.Content = Server.HtmlDecode(Content).Replace("'", "'").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(); }
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; } }