Ejemplo n.º 1
0
        private void Init()
        {
            string dir = DirHandler.CreateDirInRootApp("data", "dbs");

            PathDirRootDataBases = Path.Combine(dir, _databaseName);

            ConnectionString = new ConnectionString()
            {
                Filename   = PathDirRootDataBases,
                Connection = ConnectionType.Shared,//TODO: is it best solution? Probati sa ConnectionType.Direct
                //ReadOnly = true
            };

            using var db      = new LiteDatabase(ConnectionString);
            DocumentTermsColl = db.GetCollection <DocumentTermsData>(DocumentTerms);
            DocumentTermsColl.EnsureIndex(nameof(DocumentTermsData.Document), true);//+ SP: staviti da je dokument id unique - ispitati ima li problema negdje radi toga
            //Example using multi key index https://github.com/mbdavid/LiteDB/blob/master/LiteDB.Tests/Database/MultiKey_Mapper_Tests.cs - 2020-12-28T10:14:38
            DocumentTermsColl.EnsureIndex(d => d.Terms.Select(z => z.Term));

            TermDocumentCountColl = db.GetCollection <TermDocumentCountData>(TermDocumentCount);
            TermDocumentCountColl.EnsureIndex(nameof(TermDocumentCountData.Term));

            TermDocumentColl = db.GetCollection <TermDocumentData>(TermDocument);
            TermDocumentColl.EnsureIndex(nameof(TermDocumentData.Term));
        }
Ejemplo n.º 2
0
 public TermDocumentCountData GetTermDocumentCount(string term)
 {
     lock (_lockerTermDocumentCountColl)
     {
         return(TermDocumentCountColl.FindOne(x => x.Term == term));
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Insert or Update all documents
 /// </summary>
 /// <param name="termDocumentCounts"></param>
 /// <returns>Number of inserted new document </returns>
 public int PutTermDocumentCounts(List <TermDocumentCountData> termDocumentCounts)
 {
     lock (_lockerTermDocumentCountColl)
     {
         return(TermDocumentCountColl.Upsert(termDocumentCounts));
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// Reduce number for each count in TermDocumentCountColl {term, count}
 /// Delete  {Document, List<TermData>} from  DocumentTermsColl
 /// ?Delete { term, documentId} from TermDocumentColl
 /// 2020-12-23T10:12:38
 /// </summary>
 /// <param name="documentId"></param>
 /// <returns></returns>
 public bool DeleteDocument(string documentId)
 {
     lock (_lockerDocumentTermsColl)
     {
         DocumentTermsData documentTermsData = DocumentTermsColl.FindOne(d => d.Document == documentId);
         if (documentTermsData != null)
         {
             //Reduce number for each count in TermDocumentCountColl {term, count}
             lock (_lockerTermDocumentCountColl)
             {
                 foreach (TermData termData in documentTermsData.Terms)
                 {
                     TermDocumentCountData termDocumentCountData = TermDocumentCountColl.FindOne(d => d.Term == termData.Term);
                     if (termDocumentCountData != null)
                     {
                         termDocumentCountData.Count--;
                         TermDocumentCountColl.Update(termDocumentCountData);
                     }
                 }
                 //Delete  {Document, List<TermData>} from  DocumentTermsColl
                 return(DocumentTermsColl.Delete(documentTermsData.Id));
             }
         }
         return(false);
     }
 }