Esempio n. 1
0
        public void CalcScores(RegExpScoreProcessingParams param)
        {
            var synergies = LoadSynergies(Path.Combine(param.WorkingFolder, param.SynergiesFileName));

            using (var docsConnection = DatabaseHelper.CreateConnection(param.DocumentsDatabaseFilePath, param.Password))
            {
                docsConnection.Open();


                ///////////////////////////////////////////////////////////////////////////////

                var noteColumnCount = DatabaseHelper.GetNoteColumnCount(docsConnection, "Documents", "NOTE_TEXT");

                ///////////////////////////////////////////////////////////////////////////////

                List <int> noteColumnIndexList = new List <int>();
                noteColumnIndexList.Add(2);
                ///////////////////////////////////////////////////////////////////////////////

                var docsCount = DatabaseHelper.GetRowsCount(docsConnection, "Documents");

                var query = "SELECT ED_ENC_NUM, Category, NOTE_TEXT";

                for (var noteColumnIndex = 1; noteColumnIndex < noteColumnCount; noteColumnIndex++)
                {
                    query += ", NOTE_TEXT" + noteColumnIndex.ToString();

                    noteColumnIndexList.Add(noteColumnIndex + 2);
                }

                query += " FROM Documents";

                var documentRecords = DatabaseHelper.GetDataRecords(docsConnection, query);

                ///////////////////////////////////////////////////////////////////////////////


                var results = Parallel_CalcScores(documentRecords, docsCount, 0, noteColumnIndexList, synergies);

                results.Serialize(param.GetFullPath(param.ScoreOutputFileName));

                ///////////////////////////////////////////////////////////////////////////////

                var matchResults = new RegExpProcessingResultsCollection <RegExpMatchProcessingResult>(_listRegExps.Select(x => new RegExpMatchProcessingResult
                {
                    RegExpID           = x.ID,
                    TotalMatches       = x.TotalMatches,
                    TotalDocuments     = x.TotalDocuments,
                    TotalRecords       = x.TotalRecords,
                    CategorizedRecords = x.CategorizedRecords
                }));

                matchResults.Serialize(param.GetFullPath(param.MatchesOutputFileName));
            }
        }
        public void CalcScores(ColRegExpStatisticsProcessingParams param)
        {
            //MessageBox.Show("RegExpProcessor: CalcScores");
            using (var docsConnection = DatabaseHelper.CreateConnection(param.DocumentsDatabaseFilePath, param.Password))
            {
                docsConnection.Open();

                ///////////////////////////////////////////////////////////////////////////////

                var docsCount = DatabaseHelper.GetRowsCount(docsConnection, "Documents", param.OnlyPositiveScore ? "Score > 0" : null);

                string query = "SELECT ED_ENC_NUM, NOTE_TEXT, Score FROM Documents";

                if (param.OnlyPositiveScore)
                {
                    query += " WHERE Score > 0";
                }

                var documentRecords = DatabaseHelper.GetDataRecords(docsConnection, query);

                ///////////////////////////////////////////////////////////////////////////////

                Parallel_CalcScores(documentRecords, docsCount, 1, 2, param);

                ///////////////////////////////////////////////////////////////////////////////

                var matchResults = new RegExpProcessingResultsCollection <ColRegExpStatisticsProcessingResult>(_listRegExps.Select(x => new ColRegExpStatisticsProcessingResult
                {
                    ID             = x.ID,
                    TotalMatches   = x.TotalMatches,
                    TotalDocuments = x.TotalDocuments
                }));

                matchResults.Serialize(param.GetFullPath(param.MatchesOutputFileName));
            }
        }